gpt4 book ai didi

java - 在 Java 中合并两个 XML 文件并添加额外信息

转载 作者:太空宇宙 更新时间:2023-11-04 08:18:03 25 4
gpt4 key购买 nike

我有两个 XML 文件,我想使用 java 将它们合并到最后一个 XML 文件中。

文件1的格式:

         <root>
<a>
<a>--include two lines under <a>
<c/>
</a>
<d/>
</root>

文件2的格式:

         <root>
<a>
<c/>
</a>
<d/> -- include 1 more line at the last
</root>

谁能告诉我在两个文件中添加特定信息后如何合并这些文件。

这是我尝试过的,但它没有解决我的目的..

                public class Xml {

public static void main(String[] args) throws Exception {


Writer output = null;
output = new BufferedWriter(new FileWriter("H:\\merged_xml.xml"));
String newline = System.getProperty("line.separator");
output.write("<a>");

// Read in xml file 1
FileInputStream in = new FileInputStream("file1.xml");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;

while ((strLine = br.readLine()) != null) {

if (strLine.contains("<a>")){
strLine = strLine.replace("<a>", "info to include");
}
if (strLine.contains("</a>")){
strLine = strLine.replace("</a>", "info to include");
}

output.write(newline);
output.write(strLine);

System.out.println(strLine);
}

// Read in xml file 2
FileInputStream in2 = new FileInputStream("file2.xml");
BufferedReader br2 = new BufferedReader(new InputStreamReader(in2));
String strLine2;

while ((strLine2 = br2.readLine()) != null) {

if (strLine2.contains("<d>")){
strLine2 = strLine2.replace("<d>", "info to include");
}

output.write(strLine2);
output.write(newline);
System.out.println(strLine2);
}

output.write("</d>");
output.close();

System.out.println("Merge Complete");

}

}

最佳答案

您需要使用 XML 解析器来实现您想要的 - 无需使用 Java IO 类来读取和写入新文件。您可以使用流式 XML 解析器(谷歌搜索“java StAX”)。如果您使用 javax.xml.stream 库,您会发现 XMLEventWriter 有一个方便的方法 XMLEventWriter#add(XMLEvent)。您所要做的就是循环每个文档中的顶级元素,并使用此方法将它们添加到您的编写器中以生成合并结果。唯一有趣的部分是实现仅考虑(仅调用“add”)顶级节点的读取器逻辑。

关于java - 在 Java 中合并两个 XML 文件并添加额外信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10087641/

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