You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XML的嵌套标签中获取上级标签的属性值?

在XML嵌套标签中获取父标签属性值的方法

不同的XML处理工具和场景下,获取父标签属性的方式有所不同,以下是几种常用方案:

  • XPath 定位(通用方案)
    XPath 支持通过父轴(..)直接定位到父节点,再获取其属性。针对你的示例,要在<nestedtag>中获取父节点的name属性,可使用表达式 ../@name。
    如果是在XSLT中应用,示例代码如下:

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="nestedtag">
        <!-- 输出父标签的name属性值 -->
        <xsl:value-of select="../@name"/>
      </xsl:template>
    </xsl:stylesheet>
    
  • Python xml.etree.ElementTree 实现
    利用ElementTree的getparent()方法获取父节点,再调用get()方法提取属性:

    import xml.etree.ElementTree as ET
    
    # 解析XML文件
    tree = ET.parse("your_xml_file.xml")
    root = tree.getroot()
    
    # 遍历所有nestedtag节点
    for nested_tag in root.findall(".//nestedtag"):
        parent_tag = nested_tag.getparent()
        parent_name = parent_tag.get("name")
        print(parent_name)  # 输出 Charlie
    
  • Python lxml 库实现
    lxml对XPath支持更完善,可直接通过XPath表达式获取:

    from lxml import etree
    
    tree = etree.parse("your_xml_file.xml")
    # 获取所有nestedtag节点
    nested_tags = tree.xpath("//nestedtag")
    for tag in nested_tags:
        # 通过XPath获取父节点的name属性
        parent_name = tag.xpath("../@name")[0]
        print(parent_name)
    
  • Java DOM 解析实现
    通过getParentNode()获取父元素,再调用getAttribute()提取属性值:

    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import java.io.File;
    
    public class XmlParentAttribute {
        public static void main(String[] args) {
            try {
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                DocumentBuilder builder = factory.newDocumentBuilder();
                Document doc = builder.parse(new File("your_xml_file.xml"));
    
                NodeList nestedTags = doc.getElementsByTagName("nestedtag");
                for (int i = 0; i < nestedTags.getLength(); i++) {
                    Element nested = (Element) nestedTags.item(i);
                    Element parent = (Element) nested.getParentNode();
                    String parentName = parent.getAttribute("name");
                    System.out.println(parentName); // 输出 Charlie
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

内容的提问来源于stack exchange,提问作者Ostap Strashevskii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:15:48