【发布时间】:2015-01-15 19:17:24
【问题描述】:
我正在用Java编写一个程序,它将读取一个XML文件并进行一些修改,然后以相同的格式写入文件。
以下是读写XML文件的代码块:
final Document fileDocument = parseFileAsDocument(file);
final OutputFormat format = new OutputFormat(fileDocument);
try {
final FileWriter out = new FileWriter(file);
final XMLSerializer serializer = new XMLSerializer(out,format);
serializer.serialize(fileDocument);
}
catch (final IOException e) {
System.out.println(e.getMessage());
}
这是用于解析文件的方法:
private Document parseFileAsDocument(final File file) {
Document inputDocument = null;
try {
inputDocument = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);
}//catching some exceptions{}
return inputDocument;
}
我注意到文件写入后有两个变化: 在我有类似这样的节点之前:
<instance ref='filter'>
<value></value>
</instance>
读写后的节点是这样的:
<instance ref="filter">
<value/>
</instance>
从上面可以看出,“过滤器”已更改为带有双引号的“过滤器”。
第二个更改是<value></value> 已更改为<value/>。每当我们有一个类似于<tag></tag> 的节点且其间没有任何值时,XML 文件都会发生这种变化。因此,如果我们有类似<tag>somevalue</tag> 的内容,则没有问题。
有什么想法请在编写后如何使 XML 节点格式相同?
我会很感激的!
【问题讨论】:
标签: java xml xml-parsing