【问题标题】:Find Placemarks in kml file在 kml 文件中查找地标
【发布时间】: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


【解决方案1】:

如果没有看到完整的文件很难判断,但试试这样的

placemark_list = doc.xpath("//*[local-name()='Placemark']")
print(len(placemark_list))

看看它是否有效。

【讨论】:

    猜你喜欢
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    相关资源
    最近更新 更多