如何使用jdom和java将数据附加到xml文件

时间:2012-07-31 06:19:59

标签: java xml jdom

我想知道是否有人可以帮助将数据附加到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"));
                }

            }

我基本上尝试做的是在每次循环迭代后将新的项目标记写入文件。该item标记应包含新的childNodes“Q”和“A”。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

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

没有简单的方法可以在没有首先加载现有文件的情况下向现有XML文件添加元素。 (虽然你可以潜在地以流式方式进行,但编码可能要复杂得多。)

答案 1 :(得分:0)

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

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

这会在<NewElement/>元素下添加元素item

<item>
     <NewElement/>
</item>

请参阅Element javadocs。