【发布时间】:2013-03-25 20:05:19
【问题描述】:
我尝试使用 XPath、Python 和 etree 提取值。我对收到的 .xml 文件没有任何影响,我认为它似乎在某种程度上无效。
我的方法已经提取了我要检查的文本节点对象。
# This is the tag.
textTag = lastExportTree.xpath("//TEXT_NODE[@PROPERTY = '%s']/TEXT[@ID = '%s']" % (key, id[1]))
# This is a part of the xml. I already have the text node I want to examine.
<TEXT ID="1001" STATE="5" LOCKED="false"><SYSTEMMESSAGE>CALBUY</SYSTEMMESSAGE>Hiho</TEXT>
<TEXT ID="1002" STATE="1" LOCKED="false"/>
<TEXT ID="1003" STATE="5" LOCKED="false">Stack</TEXT>
<TEXT ID="1004" STATE="1" LOCKED="false">Overflow</TEXT>
如果我想访问 ID="1003" 的内容,我只需要输入:
print(textTag.text); # Will print 'Stack'
但 ID="1001" 的标签也包含 SYSTEMMESSAGE 标签。 如何访问内容“HiHo”? (textTag.text 不起作用!)这是我收到的无效 xml 吗?
非常感谢您的回答!
【问题讨论】:
-
如果 xml 文件无效,当您尝试加载文档时,您的 xml 解析器会报错,所以这不是问题所在。您显示的 xpath 无效,不会选择您声明的文本节点...更准确的代码会有所帮助!
-
你看过 etree 文档中关于混合内容的部分吗?effbot.org/zone/element-infoset.htm#mixed-content
标签: python xpath lxml elementtree