Я пытаюсь найти элемент из файла KML с помощью элемента деревьев следующим образом:Python ElementTree найти() не соответствует в KML файл
from xml.etree.ElementTree import ElementTree
tree = ElementTree()
tree.parse("history-03-02-2012.kml")
p = tree.find(".//name")
достаточное подмножество файла, чтобы продемонстрировать эту проблему следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Location history from 03/03/2012 to 03/10/2012</name>
</Document>
</kml>
Элемент «name» существует; почему поиск возвращается пустым?
В дополнение к @CharlesDuffy хороший ответ (+1), вы также можете просто изменить свой xpath на '// * [name() = 'name']'. –
@DevNull ... как в стороне - 'find()' ElementTree 'не * довольно * XPath; думайте об этом больше как о языке, «вдохновленном» XPath. Таким образом, хотя ваша строка полностью допустима XPath и удобный подход к использованию с другими инструментами, она, похоже, не работает в подмножестве xml.etree.ElementTree реализует (в отличие от lxml.etree, который использует XPath 1.0 для libxml2 реализация). –
@CharlesDuffy - Приятно знать спасибо! –