我有一個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