1

我想知道是否有人可以帮助将数据附加到 XML 文件中。下面,我有代码,它从另一个 xml 文件中获取数据,进行一些逻辑更改,并将更改写入新的输出文件。但是,通过这个api

m having trouble understanding which method does appending. It seems like all of them creates a new XML file doc/overwrites an existing one if it exists. I试图在循环时将标签附加到新文件中。

        for(int i = 0; i < itemList.size(); i++){

            //get the specific item node 
            Element item = (Element)itemList.get(i);

            //there are some non item nodes so need this check
            if(item.getName().equals("item")){  

                //do some logic changing to the tags

                //System.out.println(item.getValue());
                //System.out.println(item.getChild("Q").getValue());
                //System.out.println(item.getChild("A").getValue());

                boolean exists = (new File("/Users/davidyu/Desktop/file2.xml")).exists();
                //if file exists
                if(exists){
                    System.out.println("in here1");
                    xmlOutput.?????
                }
                else{
                    System.out.println("in here2");
                    xmlOutput.output(doc, new FileWriter("/Users/davidyu/Desktop/file2.xml"));
                }

            }

我基本上想做的是在每次循环迭代后将一个新的项目标签写入文件中。该项目标签应包含新的子节点“Q”和“A”。

我怎样才能做到这一点?

4

2 回答 2

2

鉴于您在循环中执行此操作,因此在循环开始之前加载文件一次,然后遍历循环并将元素添加到文档中,然后在循环之后再次保存它是有意义的。如果该文件事先不存在,请使用您需要的任何结构创建一个新文档(仅在内存中,因为您稍后会保存它) - 例如,只需一个适当的根元素。当然,您需要确定要添加新元素的位置。

在不首先加载现有文件的情况下,没有简单的方法可以将元素添加到现有 XML文件中。(虽然您可能以流式方式执行此操作,但编写代码可能要复杂得多。)

于 2012-07-31T06:26:01.743 回答
0

XMLOutputter 只是将现有的 XML 结构输出到目标 - 在您的情况下是文件。在我看来,您似乎对更改现有 XML 文档的结构感兴趣。如果是这种情况,那么一旦您引用了要添加内容的元素(Element item = (Element)itemList.get(i);在您的示例中),您需要执行以下操作:

Element newElement = new Element("NewElement");
item.addContent(newElement);

这将在给出的元素<NewElement/>下添加元素item

<item>
     <NewElement/>
</item>

请参阅元素javadocs。

于 2012-07-31T07:33:40.493 回答