【发布时间】:2021-09-17 06:31:59
【问题描述】:
我想在一个 kml 文件中查找所有地标:
from lxml import etree
doc = etree.parse(filename)
for elem in doc.findall('<Placemark>'):
print(elem.find("<Placemark>").text)
这不起作用,即它找不到任何东西,我认为是因为每个地标都是独一无二的,因为每个地标都有自己的 id,例如:
<Placemark id="ID_09795">
<Placemark id="ID_15356">
<Placemark id="ID_64532">
我该怎么做?
编辑:根据@ScottHunter 评论更改代码:
placemark_list = doc.findall("Placemark")
print ("length:" + str(len(placemark_list)))
for placemark in placemark_list:
print(placemark.text)
长度为0
【问题讨论】:
-
不应该每个
elem是Placemark吗?为什么需要在print语句中再做一个find? -
我们可以看看你的 kml 文件的样本吗?
-
@ScottHunter:见问题补充
-
我猜 XML 文档使用了命名空间。见stackoverflow.com/q/38189578/407651
-
不幸的是,该解决方案不使用 lxml
标签: python xml-parsing