我有一個XML使用ElementTree的命名空間,它的小部分看起來是這樣的:解析XML使用Python
<?xml version="1.0" ?>
<i:insert xmlns:i="urn:com:xml:insert" xmlns="urn:com:xml:data">
<data>
<image imageId="1"></image>
<content>Content</content>
</data>
</i:insert>
當我把它用ElementTree
並將其保存到一個文件,我看到以下解析:
<ns0:insert xmlns:ns0="urn:com:xml:insert" xmlns:ns1="urn:com:xml:data">
<ns1:data>
<ns1:image imageId="1"></ns1:image>
<ns1:content>Content</ns1:content>
</ns1:data>
</ns0:insert>
爲什麼它會改變前綴並將它們放在任何地方?使用minidom
我沒有這樣的問題。它是否配置? ElementTree
的文檔非常差。 問題是,我無法找到任何節點後,這樣的解析,例如image
- 無法找到它有或沒有命名空間,如果我使用它像{namespace}image
或只是image
。爲什麼?任何建議,強烈感激。
什麼我已經嘗試過:
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
for a in root.findall('ns1:image'):
print a.attrib
這會返回一個錯誤,而另一個沒有返回:
for a in root.findall('{urn:com:xml:data}image'):
print a.attrib
我也試圖使命名空間像這樣使用它:
namespaces = {'ns1': 'urn:com:xml:data'}
for a in root.findall('ns1:image', namespaces):
print a.attrib
它什麼都沒有返回。我究竟做錯了什麼?
您可以添加用於解析XML的Python代碼嗎? –