2011-08-23 29 views
2

我有一個非常簡單的KML文件,它在用ElementTree分析時不返回任何節點。這讓我很沮喪:-)。任何線索?ElementTree不會返回解析簡單KML文檔的節點

from xml.etree import ElementTree 
from pprint  import pprint 

kml = '''<?xml version="1.0" encoding="UTF-8"?> 
<kml xmlns="http://earth.google.com/kml/2.0"> 
<Document> 
    <name>NEXRAD Radar Sites</name> 
    <Schema parent="Placemark" name="wsr"> 
    <SimpleField type="wstring" name="STATE"> 
    </SimpleField> 
    </Schema> 
    <wsr> 
    <name>KABR</name> 
    </wsr> 
</Document> 
</kml> 
''' 

tree = ElementTree.fromstring(kml) 
ElementTree.dump(tree) 
for node in tree.iter('wsr'): 
    pprint(node) 
for node in tree.findall('../wsr'): 
    pprint(node) 

回答

4

該標記是命名空間。如果您嘗試使用tree.iter()且沒有標籤,它將顯示ElementTree認爲標籤被調用的內容。 wsr標籤被稱爲{http://earth.google.com/kml/2.0}wsr。這返回一個節點:

list(tree.iter('{http://earth.google.com/kml/2.0}wsr')) 
+0

就是這樣,謝謝。 – Bryce