gpt4 book ai didi

java - 动态地从另一个 XML 文件填充 XML 数据 (Java)

转载 作者:行者123 更新时间:2023-12-02 03:32:33 24 4
gpt4 key购买 nike

我有一个 xml 文件,我想在其中填充另一个 xml 文件中的值。例如,如果我有 data.xml :

<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,然后执行类似的操作(非常简单,来自 Oracle java tuts):

// ...
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
// ...

public class Stylizer {
// ...
public static void main (String argv[]) {
// ...
try {
File stylesheet = new File(argv[0]);
File datafile = new File(argv[1]);

DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(datafile);
// ...
StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = Factory.newTransformer(stylesource);
}
}
}

创建 XSLT 的所有信息和分步指南,此示例应用程序是 here .

关于java - 动态地从另一个 XML 文件填充 XML 数据 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37885255/

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