作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嗨,我正在 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/
我是一名优秀的程序员,十分优秀!