我想知道是否有人可以帮助将数据附加到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”。
我该怎么做?
答案 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。