我知道 stackoverflow 上有很多关于从 Java 编写到 XML 的问题,但它太复杂了。我觉得我有一个非常简单的问题,但我无法弄清楚。
因此,我有一个程序需要大量用户输入,并且当前正在创建并附加带有结果的文本文档。我将在这里发布我的作者代码:
PrintWriter out = null;
try {
out = new PrintWriter(new BufferedWriter(new FileWriter("C:/Documents and Settings/blank/My Documents/test/test.txt", true)));
out.println("");
out.println("<event title=\""+titleFieldUI+"\"");
out.println(" start=\""+monthLongUI+" "+dayLongUI+" "+yearLongUI+" 00:00:00 EST"+"\"");
out.println(" isDuration=\"true\"");
out.println(" color=\""+sValue+"\"");
out.println(" end=\""+monthLong1UI+" "+dayLong1UI+" "+yearLong1UI+" 00:00:00 EST"+"\"");
out.println(" "+descriptionUI);
out.println("");
out.println("</event>");
out.println(" <!-- Above event added by: " +System.getProperty("user.name")+" " +
"on: "+month+"/"+day+"/"+year+" -->");
}catch (IOException e) {
System.err.println(e);
}finally{
if(out != null){
out.close();
}
}
所以最后,我希望它写入一个已经存在的 XML 文件(我可以通过简单地更改我的编写器所在的位置来实现)。问题是,这个 XML 文件有一个根标记,称为<data>
。我需要将程序的结果放在 XML 文件的底部,但要先于</data>
。这是唯一的要求。我发现的一切似乎都太复杂了,我无法弄清楚。
很感谢任何形式的帮助!
您应该使用合适的 XML API。例如,这是一个使用的示例JDOM http://www.jdom.org/:
import java.io.*;
import org.jdom2.*;
import org.jdom2.input.*;
import org.jdom2.output.*;
public class Test {
public static void main(String args[]) throws IOException, JDOMException {
File input = new File("input.xml");
Document document = new SAXBuilder().build(input);
Element element = new Element("event");
element.setAttribute("title", "foo");
// etc...
document.getRootElement().addContent(element);
// Java 7 try-with-resources statement; use a try/finally
// block to close the output stream if you're not using Java 7
try(OutputStream out = new FileOutputStream("output.xml")) {
new XMLOutputter().output(document, out);
}
}
}
It's really没那么难......而且它比手动写出来要强大得多。 (例如,如果您的事件标题包含“&”,这将执行正确的操作 - 而您的代码将生成无效的 XML。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)