1
我有一个KML文件KML文件 - 我使用的wikipedia 'default'作为样本:解析使用LXML
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
<name>New York City</name>
<description>New York City</description>
<Point>
<coordinates>-74.006393,40.714172,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
而且我想提取的坐标。
现在,我已经得到了嵌入的命名空间的一个片段工作搜索:
#!/usr/python/python3.4/bin/python3
from lxml import etree as ET
tree = ET.parse('sample.kml')
root = tree.getroot
print (root.find('.//{http://www.opengis.net/kml/2.2}coordinates').text)
这工作得很好。
但是已经发现这一点:
Parsing XML with namespace in Python via 'ElementTree'
我试图通过从文件中读取的命名空间去做,用“root.nsmap”。
print (root.nsmap)
给我:
{None: '{http://www.opengis.net/kml/2.2}'}
所以我觉得我应该能够做到这一点:
print (root.find('.//coordinates',root.nsmap).text)
或者非常类似的东西,使用None
命名空间。 (例如没有前缀)。但是,这并不工作 - 我做的,当它得到一个错误:
AttributeError: 'NoneType' object has no attribute 'text'
我认为这意味着我在这种情况下“查找”没有发现任何东西。
缺少什么我在这里?