求问, 各位大佬有没有更好的实现方式
"""解析 xml 的结构为目录树,能够快速的对 xml 的结构有基本的了解。这也是 nonlocal 新关键字的一个 demo
"""
from io import BytesIO
from lxml import etree
def init_xpath(page_source: str):
"""page_source 的 xml 文本转为可以解析的 etree 对象
"""
xml_root = etree.parse(BytesIO(page_source.encode()))
return xml_root
def fmt(fg):
"""格式化输出"""
print("-" * fg, end="")
def tree_xml(root, result, flags=0, step=2):
result.append((flags, root))
def tree(root):
nonlocal flags
ch_root = root.getchildren()
if ch_root:
flags += step
for ch in ch_root:
tree_xml(ch, result, flags)
else:
pass
tree(root)
return result
def main():
data = """
<xml>
<aa>
<bb></bb>
<cc>
<a11></a11>
<a22>
<mue></mue>
</a22>
</cc>
<dd></dd>
</aa>
<ee>
<ff></ff>
</ee>
</xml>
"""
xml_root = init_xpath(data)
res_xml = tree_xml(xml_root.getroot(), [])
for fg, _root in res_xml:
fmt(fg)
print(_root.tag)
if __name__ == '__main__':
main()
执行结果是这样的
xml
--aa
----bb
----cc
------a11
------a22
--------mue
----dd
--ee
----ff
1
jalena 2021-01-22 09:14:44 +08:00
根据我这么些年的开发经验,是否有一个 getElement method ??
|