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

如何使用XSLT将XML中person的子元素嵌套进details标签?

使用XSLT实现XML结构重排

需求说明

原始XML结构:

<person>
    <name>John</name>
    <age>25</age>
    <gender>male</gender>
</person>

希望转换为包含新层级<details>的结构:

<person>
    <details>
        <name>John</name>
        <age>25</age>
        <gender>male</gender>
    </details>
</person>

XSLT实现代码

下面是实现该转换的XSLT样式表,核心逻辑是匹配<person>节点,保留外层标签的同时,将其所有子节点包裹到新增的<details>节点中:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- 匹配根节点<person> -->
    <xsl:template match="person">
        <person>
            <!-- 新增<details>层级节点 -->
            <details>
                <!-- 复制<person>下的所有子元素 -->
                <xsl:copy-of select="*"/>
            </details>
        </person>
    </xsl:template>
</xsl:stylesheet>

Java中调用XSLT的示例

如果需要在Java代码中执行该转换,可以参考以下代码片段:

import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import java.io.*;

public class XmlTransformer {
    public static void main(String[] args) throws TransformerException {
        // 初始化转换器工厂
        TransformerFactory factory = TransformerFactory.newInstance();
        // 加载XSLT样式表文件
        Source xsltSource = new StreamSource(new File("transform.xsl"));
        Transformer transformer = factory.newTransformer(xsltSource);
        
        // 加载待转换的原始XML
        Source xmlInput = new StreamSource(new File("input.xml"));
        // 指定转换结果的输出文件
        Result xmlOutput = new StreamResult(new File("output.xml"));
        
        // 执行转换操作
        transformer.transform(xmlInput, xmlOutput);
        
        System.out.println("XML结构重排完成,结果已保存至output.xml");
    }
}

内容的提问来源于stack exchange,提问作者Kavya Jindal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:50:25