根据xml值获取元素所有父节点
from lxml import etree
s = '''
<Departments orgID="123" name="xmllist">
<One>
<orgID>124</orgID>
<name>A</name>
<type>type a</type>
<status>Active</status>
<Two>
<orgID>125</orgID>
<name>B</name>
<type>type b</type>
<status>Active</status>
<Three>
<orgID>126</orgID>
<name>C</name>
<type>type c</type>
<status>Active</status>
</Three>
</Two>
</One>
<Department>
<orgID>109449</orgID>
<name>D</name>
<type>type d</type>
<status>Active</status>
</Department>
</Departments>'''
root = etree.fromstring(s)
element = './/name[text()="C"]'
def get_root_tag(element):
parent_name = ''
result = []
for target in root.xpath(element):
parent_name = find_parent_node(result, target)
return '<'.join(result)
def find_parent_node(result, target):
parent_node = target.find('..')
if not hasattr(parent_node, 'tag'):
return result
else:
result.append(parent_node.tag)
return find_parent_node(result, parent_node)
name = get_root_tag(element)
print(name)
Three<Two<One<Departments

浙公网安备 33010602011771号