[英]Parse XML file with namespace with Python
我有一個復雜的 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 塊開頭和結尾的塊,我要查找的信息可以遠至 label,甚至更遠。
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
當您使用命名空間處理 XML 時,您必須指定使用的命名空間。 為此,我:
另請注意, findall的第一個參數包含一些:作為元素名稱的初始部分。
試試下面的代碼:
import xml.etree.ElementTree as et
tree = et.parse('Input.xml')
root = tree.getroot()
ns = {'some': 'something.something.com'}
for elem in root.findall('.//some:label', ns):
print(elem.text)
當然,這只是如何引用現有元素的示例。 根據您的需要進行更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.