2011-08-23 63 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