【发布时间】:2020-05-01 22:48:00
【问题描述】:
我有一个复杂的 xml,我试图从中提取数据。
<?xml version="1.0" ?>
<root xmlns="something.something.com">
<Save>
<AdditionalInfo>
<Name></Name>
<Time></Time>
<UtilityVersion></UtilityVersion>
<XMLVersion></XMLVersion>
<PluginName></PluginName>
<ClassName></ClassName>
</AdditionalInfo>
<Data>
<session>
<xyDataObjects>
<xyData Key="'info'" ObjectType="moreinfo" Type="evenmoreinfo">
<axis1QuantityType ObjectType="guesswhat" Type="info!">
<label></label>
<type></type>
</axis1QuantityType>
... and so on and so on
该文件有多个以 Save 和 /Save 块开头和结尾的块,我要查找的信息可以与标签一样远,甚至更远。
ElementTree.Iter 似乎是我的解决方案,因为它会遍历每个 Save 块并找到我正在寻找的 <label> 信息,但不幸的是,它不接受命名空间参数。
我还有哪些其他选择?我试图保持我的代码灵活,因为我预见到 xml 文件的结构将来可能会改变,而且很简单,所以我宁愿不实现类似的东西:
tree= ET.parse('dblank.xml')
root = tree.getroot()
for i in range(len(root)):
Array[i]=root[i][1][0][0][0][0][0].text
【问题讨论】:
-
您可以使用
xpath查询来查找您想要的信息。到目前为止,您尝试过什么? -
“找到我正在寻找的信息”。您究竟在寻找什么信息?你仍然可以使用
iter();在检查条件时,您只需要考虑元素的命名空间。或者您可以将findall()与通配符一起使用。见stackoverflow.com/a/61154644/407651
标签: python python-3.x elementtree