使用XML ElementTree获取XML父元素的方法
访问XML元素父元素的便捷方法
不同的XML解析工具或编程语言都有直接或间接获取父元素的便捷方式,以下是几种常见场景的实现:
浏览器JavaScript环境(DOM API)
浏览器原生的XML DOM元素自带parentNode属性,直接调用就能拿到父元素:// 获取id为254的B元素 const bElement = document.querySelector('B[id="254"]'); const parentA = bElement.parentNode; // 得到A元素 // 获取Z元素的父元素B const zElement = document.querySelector('Z'); const parentB = zElement.parentNode; // 得到B元素Python的xml.etree.ElementTree库
这个标准库的元素对象提供getparent()方法,可直接获取父元素:import xml.etree.ElementTree as ET xml_str = '''<A> <B id="254"> <Z>12.34</Z> <C>Lore</C> <D>9</D> </B> </A>''' root = ET.fromstring(xml_str) b_elem = root.find('.//B[@id="254"]') parent_a = b_elem.getparent() # 获取A元素 z_elem = b_elem.find('Z') parent_b = z_elem.getparent() # 获取B元素XPath通用语法
几乎所有支持XPath的XML解析工具,都可以用..表示当前节点的父节点,直接通过XPath表达式查询:- 要获取B元素的父元素,XPath表达式:
//B[@id="254"]/.. - 要获取Z元素的父元素,XPath表达式:
//Z/..
以Python的lxml库为例:
from lxml import etree xml_str = '''<A> <B id="254"> <Z>12.34</Z> <C>Lore</C> <D>9</D> </B> </A>''' tree = etree.fromstring(xml_str) parent_a = tree.xpath('//B[@id="254"]/..')[0] # 得到A元素 parent_b = tree.xpath('//Z/..')[0] # 得到B元素- 要获取B元素的父元素,XPath表达式:
内容的提问来源于stack exchange,提问作者JME
相关产品推荐
相关产品推荐

