节点遍历相关操作

from lxml import etree

root = etree.Element("root")
etree.SubElement(root, "child").text = "Child 1"
etree.SubElement(root, "child").text = "Child 2"
etree.SubElement(root, "another").text = "Child 3"
root.append(etree.Entity("#234"))
root.append(etree.Comment("some comment"))

print('遍历所有节点,包括entity和comment')
print(etree.tostring(root, pretty_print=True))
print('\n')

print('遍历所有节点')
for element in root.iter():
    print("%s - %s" % (element.tag, element.text))
print('\n')

print('遍历所有child节点')
for element in root.iter("child"):
    print("%s - %s" % (element.tag, element.text))
print('\n')

print('遍历所有child节点和another节点')
for element in root.iter("another", "child"):
    print("%s - %s" % (element.tag, element.text))
print('\n')

print('遍历所有节点,包括entity和comment')
for element in root.iter():
    if isinstance(element.tag, str):  # or 'str' in Python 3
        print("%s - %s" % (element.tag, element.text))
    else:
        print("SPECIAL: %s - %s" % (element, element.text))
print('\n')

print('遍历所有节点')
for element in root.iter(tag=etree.Element):
    print("%s - %s" % (element.tag, element.text))
print('\n')

print('遍历所有entity')
for element in root.iter(tag=etree.Entity):
    print(element.text)
print('\n')

输出:

遍历所有节点,包括entity和comment
b'<root><child>Child 1</child><child>Child 2</child><another>Child 3</another>&#234;<!--some comment--></root>\n'


遍历所有节点
root - None
child - Child 1
child - Child 2
another - Child 3
<cyfunction Entity at 0x00000229A2BA41B8> - &#234;
<cyfunction Comment at 0x00000229A2BA4048> - some comment


遍历所有child节点
child - Child 1
child - Child 2


遍历所有child节点和another节点
child - Child 1
child - Child 2
another - Child 3


遍历所有节点,包括entity和comment
root - None
child - Child 1
child - Child 2
another - Child 3
SPECIAL: &#234; - &#234;
SPECIAL: <!--some comment--> - some comment


遍历所有节点
root - None
child - Child 1
child - Child 2
another - Child 3


遍历所有entity
&#234;

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是深度优先遍历操作方法: 1. 从起始节点开始遍历,将其标记为已访问。 2. 遍历节点的所有邻居节点,如果邻居节点未被访问,则以该邻居节点为起点递归进行深度优先遍历。 3. 重复步骤2,直到所有节点都被访问。 以引用中的深度优先遍历序列为例,假设起始节点为2,则深度优先遍历的过程如下: 1. 访问节点2,将其标记为已访问。 2. 遍历节点2的邻居节点1和5,选择节点1作为下一个遍历节点,递归进行深度优先遍历。 3. 访问节点1,将其标记为已访问。 4. 遍历节点1的邻居节点2和6,选择节点6作为下一个遍历节点,递归进行深度优先遍历。 5. 访问节点6,将其标记为已访问。 6. 遍历节点6的邻居节点3和7,选择节点3作为下一个遍历节点,递归进行深度优先遍历。 7. 访问节点3,将其标记为已访问。 8. 遍历节点3的邻居节点4和7,选择节点4作为下一个遍历节点,递归进行深度优先遍历。 9. 访问节点4,将其标记为已访问。 10. 遍历节点4的邻居节点7,选择节点7作为下一个遍历节点,递归进行深度优先遍历。 11. 访问节点7,将其标记为已访问。 12. 遍历节点7的邻居节点8,选择节点8作为下一个遍历节点,递归进行深度优先遍历。 13. 访问节点8,将其标记为已访问。 14. 遍历节点8的邻居节点5,选择节点5作为下一个遍历节点,递归进行深度优先遍历。 15. 访问节点5,将其标记为已访问。 16. 所有节点都已被访问,遍历结束。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值