How can I check the existence of attributes and tags in XML before parsing?(如何在解析之前检查 XML 中是否存在属性和标签?)
问题描述
我正在通过 Python 中的元素树解析 XML 文件,并将内容写入 cpp 文件.
I'm parsing an XML file via Element Tree in python and and writing the content to a cpp file.
子标签的内容会因不同的标签而异.例如,第一个事件标签将派对标签作为子标签,但第二个事件标签没有.
The content of children tags will be variant for different tags. For example first event tag has party tag as child but second event tag doesn't have.
-->如何在解析前检查标签是否存在?
-->How can I check whether a tag exists or not before parsing?
-->Children 在第一个事件标签中具有 value 属性,但在第二个事件标签中没有.如何在取值之前检查属性是否存在.
-->Children has value attribute in 1st event tag but not in second. How can I check whether an attribute exists or not before taking it's value.
--> 目前我的代码对不存在的派对标签抛出错误,并为第二个子标签设置无"属性值.
--> Currently my code throws an error for non existing party tag and sets a "None" attribute value for the second children tag.
<main>
<event>
<party>Big</party>
<children type="me" value="3"/>
</event>
<event>
<children type="me"/>
</event>
</main>
代码:
import xml.etree.ElementTree as ET
tree = ET.parse('party.xml')
root = tree.getroot()
for event in root.findall('event'):
parties = event.find('party').text
children = event.get('value')
我想检查标签,然后取它们的值.
I want to check the tags and then take their values.
推荐答案
如果标签不存在,.find()
确实返回 None
.只需测试该值:
If a tag doesn't exist, .find()
indeed returns None
. Simply test for that value:
for event in root.findall('event'):
party = event.find('party')
if party is None:
continue
parties = party.text
children = event.get('value')
您已经在事件上使用 .get()
来测试 value
属性;如果属性不存在,它也会返回 None
.
You already use .get()
on event to test for the value
the attribute; it returns None
as well if the attribute does not exist.
属性存储在 .attrib
字典中,因此您也可以使用标准 Python 技术来显式测试属性:
Attributes are stored in the .attrib
dictionary, so you can use standard Python techniques to test for the attribute explicitly too:
if 'value' in event.attrib:
# value attribute is present.
这篇关于如何在解析之前检查 XML 中是否存在属性和标签?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在解析之前检查 XML 中是否存在属性和标签?
- 计算测试数量的Python单元测试 2022-01-01
- ";find_element_by_name(';name';)";和&QOOT;FIND_ELEMENT(BY NAME,';NAME';)";之间有什么区别? 2022-01-01
- CTR 中的 AES 如何用于 Python 和 PyCrypto? 2022-01-01
- 我如何卸载 PyTorch? 2022-01-01
- 如何使用PYSPARK从Spark获得批次行 2022-01-01
- 使用公司代理使Python3.x Slack(松弛客户端) 2022-01-01
- 我如何透明地重定向一个Python导入? 2022-01-01
- YouTube API v3 返回截断的观看记录 2022-01-01
- 使用 Cython 将 Python 链接到共享库 2022-01-01
- 检查具有纬度和经度的地理点是否在 shapefile 中 2022-01-01