我有一个xml文件,我想从另一个xml文件填充值。举例来说,如果我有data.xml
:从另一个XML文件动态填充XML数据(Java)
<Data>
<Person>
<Name>neby</Name>
<Phone>
<Home>5553456789</Home>
<Mobile>5559879876</Mobile>
</Phone>
</Person>
</Data>
我要填写test.xml
这样(从上面的文件中获取数据):
<Test>
<Name>${Name}</Name>
<Number>${Home}</Number>
</Test>
在我的Java程序,我在运行时创建的XML文件。我想给一个文件名,“传”给test.xml
,有test.xml
读它,并填写文字。
有没有办法做到这一点?
我是否正确地做?我得到的只是编码。
没关系,我得到它的工作。从上面使用data.xml
。
MyXSL.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="Data/Person">
<Test>
<Name><xsl:value-of select="Name"/></Name>
<Number><xsl:value-of select="Home"/></Number>
</Test>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
代码:
try {
File stylesheet = new File("MyXSL.xsl");
File dataFile = new File("data.xml");
Document document = DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse(dataFile);
StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = TransformerFactory.newInstance().newTransformer(stylesource);
StringWriter stringWriter = new StringWriter();
transformer.transform(new DOMSource(document), new StreamResult(stringWriter));
System.out.println(stringWriter.toString());
} catch(Exception e){
e.printStackTrace();
}
输出:
<?xml version="1.0" encoding="UTF-8"?>
我在做什么错?
上面的代码有效。
这就是XSLT的诞生。 – duffymo
从来没有听说过XSLT。我会查找它。如果你可以给一个指导,这也会有所帮助。谢谢回复! – Vylic
Google it。它是XML风格的转换。将一个流转换为另一个流。 – duffymo