首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在解析之前检查XML中是否存在属性和标记?

如何在解析之前检查XML中是否存在属性和标记?
EN

Stack Overflow用户
提问于 2013-03-22 18:30:40
回答 1查看 77.1K关注 0票数 38

我正在通过python中的元素树解析XML文件,并将内容写入cpp文件。

子标签的内容对于不同的标签是不同的。例如,第一个事件标记将party标记作为子标记,而第二个事件标记则没有。

-->如何在解析前检查标签是否存在?

-->子对象在第一个事件标签中有值属性,但在第二个事件标签中没有。如何在获取属性的值之前检查属性是否存在。

-->目前我的代码对不存在的party标签抛出一个错误,并为第二个子标签设置一个"None“属性值。

代码语言:javascript
复制
<main>
  <event>
    <party>Big</party>
    <children type="me" value="3"/>
  </event>

  <event>
    <children type="me"/>
  </event>

</main>

代码:

代码语言:javascript
复制
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')

我想要检查标记,然后获取它们的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-22 18:33:17

如果标签不存在,.find()确实会返回None。只需对该值进行测试:

代码语言:javascript
复制
for event in root.findall('event'):
    party = event.find('party')
    if party is None:
        continue
    parties = party.text
    children = event.get('value')

您已经使用.get() on event测试该属性的value;如果该属性不存在,它也会返回None

属性存储在.attrib字典中,因此您也可以使用标准Python技术显式地测试属性:

代码语言:javascript
复制
if 'value' in event.attrib:
    # value attribute is present.
票数 74
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15568126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档