python - 当相同标签位于 XML 中的子树中时,使用 Python 获取唯一值

标签 python xml

我有 getElementText 如下,它与 [0] 配合得很好,因为我正在处理的 XML 没有重复的标签。

from xml.dom import minidom

def getElementText(element, tagName):
    return str(element.getElementsByTagName(tagName)[0].firstChild.data)

doc = minidom.parse("/Users/smcho/Desktop/hello.xml")
outputTree = doc.getElementsByTagName("Output")[0]

print getElementText(outputTree, "Number") 

但是,当我解析以下 XML 时,我无法获取值 <Number>0</Number>但是<ConnectedTerminal><Number>1</Number></ConnectedTerminal>getElementText(outputTree, "Number") ,因为 getElementText 函数返回带有标签“Number”的两个元素中的第一个。

<Output>
  <ConnectedTerminal>
    <Node>5</Node>
    <Number>1</Number>
  </ConnectedTerminal>
  <Type>int8</Type>
  <Number>0</Number>
</Output>

这个问题有解决办法吗?有什么办法只得到<Number>0</Number><ConnectedTerminal><Number>1</Number></ConnectedTerminal> .

最佳答案

如果lxml是一个选项(它比 minidomyou 好得多)可以做到:

from lxml import etree

doc = etree.fromstring(xml)

node = doc.find('Number')
print node.text # 0

node = doc.xpath('//ConnectedTerminal/Number')[0]
print node.text # 1

另请参阅xpath教程。

关于python - 当相同标签位于 XML 中的子树中时,使用 Python 获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3974464/

相关文章:

Python:信号处理程序的帧参数

python - 远程 SSH 服务器访问本地文件

python - Matplotlib 中许多子图的通用标题

xml - 使用 Powershell 从命名空间中选择 XML 节点

xml - 删除包含 xmlns 属性的 XML 元素

python - 将 Python 列表作为参数,并通过交换其第一个和最后一个元素来修改列表参数

python - pandas,如何将列添加到多索引列 DataFrame

c++ - 在 C++ 中读取配置 xml 文件

安卓。在不推开屏幕的情况下对齐线性布局内的 View 。

xml - 以编程方式将 XSD 1.1 架构转换为 XSD 1.0?