我正在用Python为Eve Online API创建一个GUI前端。
我已经成功地从他们的服务器中提取了XML数据。
我正在尝试从一个名为“name”的节点中获取值:
from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')
print name
这似乎找到了节点,但输出如下:
[<DOM Element: name at 0x11e6d28>]
怎样才能让它打印出节点的值?
发布于 2008-11-25 13:59:14
它应该只是
name[0].firstChild.nodeValue
发布于 2008-11-25 14:21:09
如果它是你想要的文本部分,可能是这样的。
from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')
print " ".join(t.nodeValue for t in name[0].childNodes if t.nodeType == t.TEXT_NODE)
节点的文本部分本身就是一个节点,它被放置为所请求节点的子节点。因此,您将希望遍历它的所有子节点,并找到所有作为文本节点的子节点。一个节点可以有几个文本节点;例如。
<name>
blabla
<somestuff>asdf</somestuff>
znylpx
</name>
您需要同时使用'blabla‘和'znylpx';因此使用了“".join()。您可能希望用换行符替换空格,或者什么也不用。
发布于 2011-01-29 15:28:24
您可以使用为我设计的this.It之类的工具
doc = parse('C:\\eve.xml')
my_node_list = doc.getElementsByTagName("name")
my_n_node = my_node_list[0]
my_child = my_n_node.firstChild
my_text = my_child.data
print my_text
https://stackoverflow.com/questions/317413
复制相似问题