如何使用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
相关产品推荐
相关产品推荐

