首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Python中的minidom获取元素值

使用Python中的minidom获取元素值
EN

Stack Overflow用户
提问于 2008-11-25 13:57:03
回答 8查看 158.3K关注 0票数 120

我正在用Python为Eve Online API创建一个GUI前端。

我已经成功地从他们的服务器中提取了XML数据。

我正在尝试从一个名为“name”的节点中获取值:

代码语言:javascript
复制
from xml.dom.minidom import parse
dom = parse("C:\\eve.xml")
name = dom.getElementsByTagName('name')
print name

这似乎找到了节点,但输出如下:

代码语言:javascript
复制
[<DOM Element: name at 0x11e6d28>]

怎样才能让它打印出节点的值?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-11-25 13:59:14

它应该只是

代码语言:javascript
复制
name[0].firstChild.nodeValue
票数 180
EN

Stack Overflow用户

发布于 2008-11-25 14:21:09

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

代码语言:javascript
复制
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)

节点的文本部分本身就是一个节点,它被放置为所请求节点的子节点。因此,您将希望遍历它的所有子节点,并找到所有作为文本节点的子节点。一个节点可以有几个文本节点;例如。

代码语言:javascript
复制
<name>
  blabla
  <somestuff>asdf</somestuff>
  znylpx
</name>

您需要同时使用'blabla‘和'znylpx';因此使用了“".join()。您可能希望用换行符替换空格,或者什么也不用。

票数 60
EN

Stack Overflow用户

发布于 2011-01-29 15:28:24

您可以使用为我设计的this.It之类的工具

代码语言:javascript
复制
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
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/317413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档