gpt4 book ai didi

java - 如何在java中反转xml节点及其数据

转载 作者:行者123 更新时间:2023-12-01 12:47:57 24 4
gpt4 key购买 nike

嗨,我正在 java 中使用 XML,我的 XML 看起来像

<Name>
<firstName>FName</firstName>
<lastName>LName</lastName>
</Name>

我想将此 XML 转换为以下格式。

<Name>
<FName>firstName</FName>
<LName>lastName</LName>
</Name>

我正在寻找一些 API 或方法来一次性转换它。我的意思是将标签转换为值,并将值转换为标签。

最佳答案

您可以使用 xslt 来实现此目的。以下 xsl 交换所有叶节点名称和值。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />

<xsl:template match="/*">
<xsl:element name="{name()}">
<xsl:copy-of select="@*|b/@*" />
<xsl:apply-templates />
</xsl:element>
</xsl:template>

<xsl:template match="*[*][parent::*]">
<xsl:element name="{name()}">
<xsl:copy-of select="@*|b/@*" />
<xsl:apply-templates />
</xsl:element>
</xsl:template>

<xsl:template match="*[not(*)]">
<xsl:element name="{.}">
<xsl:copy-of select="@*|b/@*" />
<xsl:value-of select="name()"></xsl:value-of>
</xsl:element>
</xsl:template>
</xsl:stylesheet>

示例程序

import java.io.File;

import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class Test {

public static void main(String[] args) throws Exception {
TransformerFactory factory = TransformerFactory.newInstance();
Source xslt = new StreamSource(new File("transform.xslt"));
Transformer transformer = factory.newTransformer(xslt);

Source text = new StreamSource(new File("data.xml"));
transformer.transform(text, new StreamResult(new File("output.xml")));
System.out.println("Done");
}

}

输出:

<?xml version="1.0" encoding="UTF-8"?>
<Name>
<FName>firstName</FName>
<LName>lastName</LName>
</Name>

关于java - 如何在java中反转xml节点及其数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24506321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com