Я получил файл KML - Я использую wikipedia 'default' в качестве образца:Разбор KML файл, используя 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'
Я предполагаю, что означает, что мой «найти» не нашли ничего в данном случае.
Что мне здесь не хватает?