在ElementTree中检查XML Element是否有子级

亚历克斯

我以这种方式检索XML文档:

import xml.etree.ElementTree as ET

root = ET.parse(urllib2.urlopen(url))
for child in root.findall("item"):
  a1 = child[0].text # ok
  a2 = child[1].text # ok
  a3 = child[2].text # ok
  a4 = child[3].text # BOOM
  # ...

XML如下所示:

<item>
  <a1>value1</a1>
  <a2>value2</a2>
  <a3>value3</a3>
  <a4>
    <a11>value222</a11>
    <a22>value22</a22>
  </a4>
</item>

如何检查a4(在这种情况下,但可能是其他任何因素)是否有孩子?

l

您可以list在元素上尝试该功能:

>>> xml = """<item>
  <a1>value1</a1>
  <a2>value2</a2>
  <a3>value3</a3>
  <a4>
    <a11>value222</a11>
    <a22>value22</a22>
  </a4>
</item>"""
>>> root = ET.fromstring(xml)
>>> list(root[0])
[]
>>> list(root[3])
[<Element 'a11' at 0x2321e10>, <Element 'a22' at 0x2321e48>]
>>> len(list(root[3]))
2
>>> print "has children" if len(list(root[3])) else "no child"
has children
>>> print "has children" if len(list(root[2])) else "no child"
no child
>>> # Or simpler, without a call to list within len, it also works:
>>> print "has children" if len(root[3]) else "no child"
has children

我修改了您的示例,因为在根目录findall函数调用item不起作用(findall将搜索直接后代,而不是当前元素)。如果以后要在工作程序中访问子孩子的文本,则可以执行以下操作:

for child in root.findall("item"):
  # if there are children, get their text content as well.
  if len(child): 
    for subchild in child:
      subchild.text
  # else just get the current child text.
  else:
    child.text

不过,这将非常适合递归。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查数据库是否有子级

来自分类Dev

使用xml子对象,Python中的ElementTree

来自分类Dev

检查xml ElementTree节点是否为None / False

来自分类Dev

检查列表项在jQuery中是否具有多个直接跨度子级

来自分类Dev

Linux中的fork()是否将所有父级的内存页复制到子级?

来自分类Dev

XSLT:检查XML元素在xpath中是否具有父级

来自分类Dev

在创建模型之前检查模型是否有子级或属性集

来自分类Dev

在PostgreSQL中父级记录的级联删除后,是否有办法保留子记录

来自分类Dev

是否可以从集合中的子级访问父级属性?

来自分类Dev

检查 doc($XML) 中的 XML 是否有效

来自分类Dev

XML循环遍历C ++ / CLI中的所有子级和子级

来自分类Dev

检查XML元素是否具有子元素或值

来自分类Dev

jQuery XML Parse-检查Element是否具有属性

来自分类Dev

检查并删除XML中重复的子标签

来自分类Dev

Python与ElementTree在同一循环中获取XML的父级和子级值

来自分类Dev

检查XSLT中是否存在XML节点

来自分类Dev

检查xml中是否存在行

来自分类Dev

如何检查XML中是否存在元素

来自分类Dev

极少-检查XML中是否存在标签

来自分类Dev

如何检查ui-router中的当前状态是否是抽象状态的子级

来自分类Dev

Python和ElementTree:如何在XML中嵌套元素/子元素?

来自分类Dev

xml.etree.ElementTree.Element.remove的项中x与列表(项)之间的差异

来自分类Dev

python elementtree - 如何在xml中查找具有特定属性的所有元素

来自分类Dev

使用ElementTree获取python3中的所有xml属性值

来自分类Dev

使用ElementTree将新的SubElement添加到现有XML文件中

来自分类Dev

如何使用Scala获取XML文件的所有子级和子级

来自分类Dev

是否可以在Firebase规则中访问$ location变量的子级?

来自分类Dev

检查SQLServer上的XML变量中是否存在XML节点

来自分类Dev

从给定数组中获取特定父级的所有子级和孙子级

Related 相关文章

  1. 1

    检查数据库是否有子级

  2. 2

    使用xml子对象,Python中的ElementTree

  3. 3

    检查xml ElementTree节点是否为None / False

  4. 4

    检查列表项在jQuery中是否具有多个直接跨度子级

  5. 5

    Linux中的fork()是否将所有父级的内存页复制到子级?

  6. 6

    XSLT:检查XML元素在xpath中是否具有父级

  7. 7

    在创建模型之前检查模型是否有子级或属性集

  8. 8

    在PostgreSQL中父级记录的级联删除后,是否有办法保留子记录

  9. 9

    是否可以从集合中的子级访问父级属性?

  10. 10

    检查 doc($XML) 中的 XML 是否有效

  11. 11

    XML循环遍历C ++ / CLI中的所有子级和子级

  12. 12

    检查XML元素是否具有子元素或值

  13. 13

    jQuery XML Parse-检查Element是否具有属性

  14. 14

    检查并删除XML中重复的子标签

  15. 15

    Python与ElementTree在同一循环中获取XML的父级和子级值

  16. 16

    检查XSLT中是否存在XML节点

  17. 17

    检查xml中是否存在行

  18. 18

    如何检查XML中是否存在元素

  19. 19

    极少-检查XML中是否存在标签

  20. 20

    如何检查ui-router中的当前状态是否是抽象状态的子级

  21. 21

    Python和ElementTree:如何在XML中嵌套元素/子元素?

  22. 22

    xml.etree.ElementTree.Element.remove的项中x与列表(项)之间的差异

  23. 23

    python elementtree - 如何在xml中查找具有特定属性的所有元素

  24. 24

    使用ElementTree获取python3中的所有xml属性值

  25. 25

    使用ElementTree将新的SubElement添加到现有XML文件中

  26. 26

    如何使用Scala获取XML文件的所有子级和子级

  27. 27

    是否可以在Firebase规则中访问$ location变量的子级?

  28. 28

    检查SQLServer上的XML变量中是否存在XML节点

  29. 29

    从给定数组中获取特定父级的所有子级和孙子级

热门标签

归档