本文介绍了解析xml时如何从根获取xpath到python中的特定元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想列出 xml 中所有元素相对于它们的根的路径.例如
I want to list all the elements path in xml with respect to their root. for example
<A>
<B>
<C>Name</C>
<D>Name</D>
</B>
</A>
所以我想将它们列为:-
So i want to list them as :-
A/B/C
A/B/D
我能够使用 python 的元素"对象解析 xml,但无法从中提取 xpath.有什么帮助吗?
I am able to parse xml using "Element" Object of python but not able to extract xpath from it. Any help?
推荐答案
可以构造解析树的父映射,然后使用它来构造所需的 XPath:
One can construct a parent map of the parsed tree and then use it to construct a needed XPath:
import xml.etree.ElementTree as parser
def get_parent_map(root):
return {c:p for p in root.iter() for c in p}
def extract_text_info(root, original_root):
parent_map = get_parent_map(original_root)
for child in root:
if child.text is not None and len(child.text.strip()) > 0:
c = child
arr = []
while c != original_root:
arr.append(c.tag)
c = parent_map[c]
arr.append(original_root.tag)
print('/'.join(arr[::-1]))
print(child.text)
extract_text_info(child, original_root)
然后我们有
xml = """<A>
<B>
<C>Name</C>
<D>Name</D>
</B>
</A> """
root = parser.fromstring(xml)
extract_text_info(root, root)
> A/B/C
> Name
> A/B/D
> Name
这篇关于解析xml时如何从根获取xpath到python中的特定元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!