节点遍历相关操作

混江龙づ霸主 提交于 2019-12-02 19:08:59
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;

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

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!