下面是使用XSLT的例子。 在这个例子中,我用你的
<Customer>
<ClientId>123</ClientId>
<ClientName>ABC</ClientName>
</Customer>
并转化它
<Customer>
<Id>123</Id>
<ClientName>ABC</ClientName>
</Customer>
的XSLT将匹配所有ClientId
节点,并将其重命名为Id
public class XmlTransform
{
public static void main(String[] args) throws ParseException, TransformerException
{
String inXMl = "<Customer>\n" +
" <ClientId>123</ClientId>\n" +
" <ClientName>ABC</ClientName>\n" +
"</Customer>";
StringWriter writer = new StringWriter();
String inputXSLFile = "d:\\rename.xslt";
TransformerFactory factory = TransformerFactory.newInstance();
StreamSource xslStream = new StreamSource(new File(inputXSLFile));
Transformer transformer = factory.newTransformer(xslStream);
StreamSource in = new StreamSource(new StringReader(inXMl));
StreamResult out = new StreamResult(writer);
transformer.transform(in, out);
System.out.println(writer.toString());
}
}
XSLT文件
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:business="mynamespace.uri"
exclude-result-prefixes="msxsl">
<xsl:template match="/">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ClientId">
<xsl:element name="Id">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
你有试过吗?这是改变'id'而不是'name'的逻辑? –
使用XSLT?看到这里的初学者。 http://stackoverflow.com/questions/22871731/change-xml-element-name-using-xslt –