python - 所有 XML 元素标记中的 URL
问题描述
我在 Python 中使用 cElementTree 包,但遇到了元素标签的问题。它们在标签本身中包含一个属性。似乎是解析器的问题。请查看以下代码:
from xml.etree import cElementTree as ET
path='C:\\Users\\myusername\\Desktop\\test.xml'
tree=ET.parse(path)
root=tree.getroot()
root.tag
>>> '{http://www.aftmark.org}DATA'
xml是这样的:
<DATA xmlns:xsd="http://www.w.org/2008/XMLsca" xmlns="http://www.aftmark.org">
<Header>
<DATAVersion>6.5</DATAVersion>
</Header>
<Items>
<Item MaintenanceType="A">
<HazardousMaterialCode>N</HazardousMaterialCode>
<ExtendedInformation>
</Item>
知道为什么包含 url '{ http://www.aftmark.org }' 吗?我正在解析很多文件并且该网址发生了变化。DATA 标签没有。(备份是使用 root.tag 并获取该 url 并将其附加到所有 ET.find() 稍后)谢谢!
解决方案
这是因为DATA
(和所有后代)都在默认命名空间http://www.aftmark.org
中。
您看到的是命名空间 uri 和扩展的本地名称(又名 Clark 表示法)。
有关 ElementTree 中命名空间的更多信息,请参见此处。
此外,请参阅此答案以获取另一种捕获未知名称空间以在 find/findall 中使用的方法。
推荐阅读
- php - 未从 Slack Slash Commands API 接收有效负载
- r - 使用更新、删除或更改表时如何删除 sqldf 中的警告
- nativescript - Nativescript iOS 应用程序未在设备上运行
- javascript - 添加css后没有出现react-leaflet
- mysql - MySQL 在获取相关值的同时旋转表
- flutter - 我想修改颤振的工厂,使其在点击时看起来像下图
- flutter - 在颤振中,当我添加图片的 URL 时,asset.network() 不起作用,手机什么也没显示
- c# - Visual Studio 自动在本地文件夹中创建枚举文件
- dictionary - Vim E78 未知标记。当我试图映射
- swift - 我想用 Swift 写这行代码