python - 使用 xml.etree.ElementTree 解析 XML 文件时出现问题

标签 python xml python-3.x xml-parsing elementtree

我必须解析包含类似条目的 xml 文件

<error code="UnknownDevice">
    <description />
</error>

在别处定义为

<group name="error definitions">
     <errordef id="0x11" name="UnknownDevice">
        <description>Indicated device is unknown</description>
     </errordef>
     ...
</group>

给定

import xml.etree.ElementTree as ET

parser = ET.XMLParser()
parser.parser.UseForeignDTD(True)

tree = ET.parse(inputFileName, parser=parser)
root = tree.getroot()

如何获取 errorDef 的这些值?我的意思是 iddescription 的值?

如何使用 unknownDevice 搜索并提取这些值?


[更新] 错误组具有不同的名称,但格式始终为“XXX 错误定义”、“YYY 错误定义”等

此外,它们似乎嵌套在不同文档中的不同深度。

给定错误标题,例如“unknownDevice”,我如何搜索根目录下的所有内容以获取相应的 iddescription 值?

我可以使用“unknownDevice”等直接访问它们,还是必须先搜索错误组?

最佳答案

如果你有这个:

<group name="error definitions">
     <errordef id="0x11" name="UnknownDevice">
        <description>Indicated device is unknown</description>
     </errordef>
     ...
</group>

并且您想要获取每个 errordef 元素的 descriptionid 的值,您可以这样做:

for err in tree.xpath('//errordef'):
    print err.get('id'), err.find('description').text

这会给你类似的东西:

0x11 Indicated device is unknown

关于python - 使用 xml.etree.ElementTree 解析 XML 文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31591944/

相关文章:

javascript - 使用 Twisted 和 Node 理解事件循环

python - 按列名拆分数据框中的多索引数据框

java - R.java 已经生成,仍然得到 'cannot be resolved to be a variable'

python - 如何从 Pandas Dataframe 中的不完整数据生成连续记录

python - Django 和 Postgresql 运算符不存在 : integer = character varying

java - 包含其他对象集合的对象的 JAXB 解码问题

java - onBackPressed() - 无法解析符号 'webView'

python-3.x - For/if 状态以一种方式工作,但不以另一种方式工作

python - 在 Python 中解析句子(或其他更长的字符串)(ProblemSetQuestion)如何进行?

python - Pandas :根据条件计算特定日期以来时间序列的百分比变化