首页 > 编程问答 >使用 ElementTree 库解析 KML/XML

使用 ElementTree 库解析 KML/XML

时间:2024-07-27 10:15:51浏览次数:8  
标签:python xml parsing kml elementtree

我想利用 ElementTree python 库解析 SimpleData 标签中找到的“ID2”名称属性。

<Placemark>
    <ExtendedData>
        <SchemaData>
            <SimpleData name="ID1">123456</SimpleData>
            <SimpleData name="ID2">111111</SimpleData>
        </SchemaData>
    </ExtendedData>
</Placemark>

我一直在尝试类似的东西

temp=root.findall(".//Folder/Placemark/ExtendedData/SchemaData/SimpleData[@name='ID2']")

我在堆栈溢出中发现的所有内容都不包括“名称”的例子。


以下是如何使用 ElementTree 在提供的 KML/XML 片段中找到“ID2” SimpleData 标记的值:

import xml.etree.ElementTree as ET

kml_string = """
<Placemark>
    <ExtendedData>
        <SchemaData>
            <SimpleData name="ID1">123456</SimpleData>
            <SimpleData name="ID2">111111</SimpleData>
        </SchemaData>
    </ExtendedData>
</Placemark>
"""

root = ET.fromstring(kml_string)

# 使用 XPath 表达式查找属性为 'ID2' 的 'SimpleData' 元素
id2_element = root.find('.//SimpleData[@name="ID2"]')

if id2_element is not None:
    id2_value = id2_element.text
    print(id2_value)  # 输出:111111
else:
    print("未找到 ID2 元素")

说明:

  1. 导入 xml.etree.ElementTree 这将导入必要的库。
  2. 将 KML 字符串解析为 ElementTree 对象。
  3. 使用 XPath 表达式 find()
  4. // : 在任何层级中搜索。
  5. SimpleData[@name="ID2"] : 查找名称属性为“ID2”的“SimpleData”元素。
  6. 提取文本内容: 如果找到该元素,则使用 .text 获取其文本内容(在本例中为“111111”)。

这会将“ID2” SimpleData 标记的值打印到控制台。

如果有多个“Placemark”元素并且想要提取每个元素的“ID2”值,则可以使用 findall() 方法并遍历结果:

for placemark in root.findall('.//Placemark'):
    id2_element = placemark.find('.//SimpleData[@name="ID2"]')
    if id2_element is not None:
        print(id2_element.text) 

这将打印在所有“Placemark”元素中找到的每个“ID2”的值。

标签:python,xml,parsing,kml,elementtree
From: 69110107

相关文章

  • 如何从Python中的“openpyxl”饼图中删除“Series1”标签?
    我正在使用openpyxl创建一个包含饼图的Excel文件。但是,我似乎无法从图表中删除默认的“Series1”标签。为了更好的上下文,我已经包含了整个export_to_excel函数,但问题具体在于我创建饼图的分析表。defexport_to_excel(self):start_date=self.fromDate.date().toSt......
  • 在python3.8虚拟环境 执行pip 安装Excel的库
    1、在开始菜单打开Anacondaprompt(anaconda3) 2、查看环境列表 3、进入虚拟环境 4、在虚拟换进下使用清华源安装读取excel的库和写入excel的库读取Excel文件的库:pipinstallxlrd-ihttps://pypi.tuna.tsinghua.edu.cn/simple 写入Excel文件的库:pipinstallxlwt......
  • Python Pandas 使用 .loc 跨列级别多重索引
    我对python和pandas仍然很陌生,想知道是否有更好的方法来解决我遇到的索引问题。因为我看到人们在这个网站上做了非常巧妙的事情,超出了我通常可以从文档中收集到的内容,所以我想我会问——特别是因为我还在学习。我有一个包含多个列的DataFrame级别,级别0是“meta”和“r......
  • Python、Scapy 并导出到 .exe
    目前我会玩一点scapy、Qt和python。到目前为止,使用VSC启动程序时一切正常。现在我尝试使用PyInstaller制作.exe。它也有效,我得到了一个.exe文件,可以打开它并显示我的Qt-Windows。但是当我使用scapy函数时,程序崩溃,没有任何消息,并且窗口关闭。我激活了日志记录并发......
  • 使用 python 检测鼠标是等待还是忙碌
    我正在用Python2.7创建一个脚本。该脚本在应用程序内自动执行鼠标单击。有一些情况,在单击鼠标后,鼠标光标将“等待”,我想等到鼠标光标恢复正常后再进行操作我进入代码中的下一步。Python中是否可以检测鼠标是否正在等待?在Python中没有内置方法可以检测......
  • ValueError:在带有 GATT 的 Python 中,以 16 为基数的 int() 的文字无效:b'0f 18 '
    我正在使用Python和GATT库pxexpect来处理一些数据,但在尝试将十六进制值转换为整数时遇到问题。这是我看到的具体错误:print(int(gatt.before,16)),^^^^^^^^^^^^^^^^^^^^ValueError:invalidliteralforint()withbase16:b'0f18'这是产生错误的代......
  • 我看不懂这个python脚本?
    用于加载.dat文件的Python脚本importcsvfromdjango.core.management.baseimportBaseCommandfromrecommender.modelsimportUser,Artist,Tag,UserArtist,UserTaggedArtist,UserFriendimportosfromdjango.confimportsettings#Definethepathtothedatab......
  • 使用操作系统工具通过 Python 3 扫描图像
    我正在使用python构建一个应用程序,它需要能够连接到扫描仪并处理生成的pdf/jpeg/其他文件中的数据。我一直在尝试找到一种连接到扫描仪以请求扫描的方法,但没有真正的进展。我已经查看了我能找到的所有选项,包括这个答案:我想连接我的图像扫描仪程序我发现的大多......
  • Python,pandas从字符串中解析数字和字符串
    在Python中,我想解析一个字符串并将数字部分(可能有也可能没有小数点)作为浮点数返回,并将后缀作为字符串返回。示例为:7.1英寸->7.1,英寸7.1”->7.1,“7英寸->7.0,英寸-10dB->-10.0,dB-10.2dB->-10.2,dB数字部分和后缀之间没有空格。另外,我想将其应......
  • 如何在 Python 中加载站点的所有资源,包括 AJAX 请求等?
    我知道如何使用Python请求网站并读取其文本。过去,我曾尝试使用像BeautifulSoup这样的库来发出对网站上链接的所有请求,但这并没有得到看起来不像完整URL的内容,例如AJAX请求和大多数对原始域(因为“http://example.com”将丢失,更重要的是,它不是<ahref='url'>......