使用Python的minidom获取元素值

2024-06-08 01:50:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python为Eve在线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>]

如何让它打印节点的值?


Tags: 数据namefromimport服务器api节点parse
3条回答

应该是

name[0].firstChild.nodeValue

你可以用这样的东西。这对我很有用

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

可能是这样的,如果你想要的是文字部分。。。

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”()。您可能想用一个换行符来替换空间,或者可能不需要任何内容。

相关问题 更多 >

    热门问题