繁体   English   中英

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

[英]Merging two XML files in Java and also adding extra information

我有两个 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)。 您所要做的就是遍历每个文档中的顶级元素,并使用此方法将它们添加到您的编写器中以生成合并结果。 唯一时髦的部分是实现只在顶级节点上考虑(只调用“添加”)的阅读器逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM