如何在python中将kml文件解析为树结构?

奥斯汀·乔伊

我有一个试图在 python 中解析的 kml 文件,我想要的是将 SimpleData 中的 val3 作为参数传递,并且只会检索该地标标签的坐标,我之前曾在 xpath 上工作过:一个典型的例子xpath 表达式将是:

value = '..'
for val in (//Placement/ExtendedData/SimpleData[contains(text(), "+value+")]):
    print val.find_element_by_xpath(//coordinates)

但是我似乎无法通过在 Python 中使用元素树来获得相同的结果:

这是 kml 文件

<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document id="root_doc">
<Schema name="" id="">
    <SimpleField name="NAME_0" type="string"></SimpleField>
    <SimpleField name="NAME_1" type="string"></SimpleField>
</Schema>
<Folder><name></name>
  <Placemark>
    <Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    <ExtendedData><SchemaData schemaUrl="#gadm36_IND_3">
        <SimpleData name="NAME_0">val1</SimpleData>
        <SimpleData name="NAME_1">val2</SimpleData>
        <SimpleData name="NAME_2">val3</SimpleData>
    </SchemaData></ExtendedData>
      <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>92.7877807617189,9.24416637420654 92.7888870239258,9.24305438995361 92.7897186279296,9.24306106567383 92.7902832031251,9.24250030517589 92.7905578613282,9.24250030517589 92.7911148071289,9.24194431304943 92.7913894653321,9.24194431304943 92.7922210693359,9.24110984802257 92.7922210693359,9.24083423614508 92.7930526733399,9.23999977111822
      </coordinates></LinearRing>...
      <Placemark>
    <Style><LineStyle><color>ff0000ff</color></LineStyle><PolyStyle><fill>0</fill></PolyStyle></Style>
    <ExtendedData><SchemaData schemaUrl="#gadm36_IND_3">
        <SimpleData name="NAME_0">val1</SimpleData>
        <SimpleData name="NAME_1">val2</SimpleData>
        <SimpleData name="NAME_2">val3</SimpleData>
    </SchemaData></ExtendedData>
      <MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>92.7877807617189,9.24416637420654 92.7888870239258,9.24305438995361 92.7897186279296,9.24306106567383 92.7902832031251,9.24250030517589 92.7905578613282,9.24250030517589 92.7911148071289,9.24194431304943 92.7913894653321,9.24194431304943 92.7922210693359,9.24110984802257 92.7922210693359,9.24083423614508 92.7930526733399,9.23999977111822
      </coordinates></LinearRing>...

这就是我坚持的:

import xml.etree.ElementTree as ET
tree = ET.parse('')
root = tree.getroot()
for val in root.findall('.//{http://www.opengis.net/kml/2.2}SimpleData[@text=""]//coordinates'):
    print val.text
用户9455968

lxml 与 XPath命名空间一起使用在 XPath 选择器中,您可以从SimpleDatawith 文本导航val3回到Placemark祖先,然后从那里导航coordinates.

from lxml import etree

tree = etree.parse("so.xml")
nsmap = {"kml": "http://www.opengis.net/kml/2.2"}

listOfCoordinates = tree.xpath("//kml:SimpleData[text()=\"val3\"]/ancestor::kml:Placemark//kml:coordinates", namespaces=nsmap)
print(listOfCoordinates[0].text)

输出:

92.7877807617189,9.24416637420654 92.7888870239258,9.24305438995361 92.7897186279296,9.24306106567383 92.7902832031251,9.24250030517589 92.7905578613282,9.24250030517589 92.7911148071289,9.24194431304943 92.79138
94653321,9.24194431304943 92.7922210693359,9.24110984802257 92.7922210693359,9.24083423614508 92.7930526733399,9.23999977111822

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Java中将树结构转换为节点流

来自分类Dev

如何在php中获取git文件/目录树结构?

来自分类Dev

将树结构解析为If语句

来自分类Dev

如何在Android Studio中将CSV文件解析为数组

来自分类Dev

如何在C#中将.proto文件解析为FileDescriptor?

来自分类Dev

如何在iPhone中将csv文件解析为表格视图?

来自分类Dev

如何使用python / BeautifulSoup或类似工具将kml文件解析为csv?

来自分类Dev

如何在Javascript中将字符串数组转换为特定的树结构

来自分类Dev

如何在Antlr中禁用树结构?

来自分类Dev

如何在 Haskell 中将 S 表达式解析为数据结构?

来自分类Dev

如何在Android Studio中快速找到文件夹树结构中的文件?

来自分类Dev

如何在PHP中将结构写入文件?

来自分类Dev

如何在C中将结构写入文件?

来自分类Dev

在javascript中将平面json文件转换为树结构

来自分类Dev

如何在命令行中创建仅显示该目录文件夹的树结构

来自分类Dev

如何在Linux 3.8设备树结构(DTS)文件中定义platform_data

来自分类Dev

如何在 Java 中读取树结构制表符分隔的 txt 文件

来自分类Dev

如何在CLI中将命令从文本文件解析为bash脚本

来自分类Dev

Python递归将元组列表排序为树结构

来自分类Dev

如何在结构文字中将布尔指针设置为true?

来自分类Dev

如何在OpenMP中将对象或结构定义为threadprivate?

来自分类Dev

如何在 Python 中将 JSON 结构化数据写入文本文件?

来自分类Dev

如何在Tabulator中过滤树结构中的子级?

来自分类Dev

如何在Python中将这些字符串解析为前缀表示法的元组?

来自分类Dev

如何在Python中将布尔的字符串表示形式解析为布尔?

来自分类Dev

如何在Python中将HTML解析为字符串模板?

来自分类Dev

解析结构文件Python

来自分类Dev

在C#中将XML结构化文件解析为文本文件

来自分类Dev

如何在Python 2.7中将文本(.txt)文件读为.py文件?

Related 相关文章

  1. 1

    如何在Java中将树结构转换为节点流

  2. 2

    如何在php中获取git文件/目录树结构?

  3. 3

    将树结构解析为If语句

  4. 4

    如何在Android Studio中将CSV文件解析为数组

  5. 5

    如何在C#中将.proto文件解析为FileDescriptor?

  6. 6

    如何在iPhone中将csv文件解析为表格视图?

  7. 7

    如何使用python / BeautifulSoup或类似工具将kml文件解析为csv?

  8. 8

    如何在Javascript中将字符串数组转换为特定的树结构

  9. 9

    如何在Antlr中禁用树结构?

  10. 10

    如何在 Haskell 中将 S 表达式解析为数据结构?

  11. 11

    如何在Android Studio中快速找到文件夹树结构中的文件?

  12. 12

    如何在PHP中将结构写入文件?

  13. 13

    如何在C中将结构写入文件?

  14. 14

    在javascript中将平面json文件转换为树结构

  15. 15

    如何在命令行中创建仅显示该目录文件夹的树结构

  16. 16

    如何在Linux 3.8设备树结构(DTS)文件中定义platform_data

  17. 17

    如何在 Java 中读取树结构制表符分隔的 txt 文件

  18. 18

    如何在CLI中将命令从文本文件解析为bash脚本

  19. 19

    Python递归将元组列表排序为树结构

  20. 20

    如何在结构文字中将布尔指针设置为true?

  21. 21

    如何在OpenMP中将对象或结构定义为threadprivate?

  22. 22

    如何在 Python 中将 JSON 结构化数据写入文本文件?

  23. 23

    如何在Tabulator中过滤树结构中的子级?

  24. 24

    如何在Python中将这些字符串解析为前缀表示法的元组?

  25. 25

    如何在Python中将布尔的字符串表示形式解析为布尔?

  26. 26

    如何在Python中将HTML解析为字符串模板?

  27. 27

    解析结构文件Python

  28. 28

    在C#中将XML结构化文件解析为文本文件

  29. 29

    如何在Python 2.7中将文本(.txt)文件读为.py文件?

热门标签

归档