在程序中我对XML文档进行修改(xml文档存在,我想在文档中加一个元素),代码如下:
public class DomTest {
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document document = null;
File f = null; public static void main(String[] arg)
{
try
{
f = new File(arg[0]); //外部XML文件
builder = factory.newDocumentBuilder();
document = builder.parse(f);
//创建一个新的元素
Element e = document.createElement("aaaaaaaa");
//添加到XML文件中
document.getDocumentElement().appendChild(e);
}
catch(Exception)
{}
}
}
程序执行正常,没有报错,但是当我打开XML文件时,却发现XML文件的内容没有发生变化,创建的新元素没有添加到XML文件中去。这是什么原因,请各位高手指点。
用JAVA对XML文件进行修改后是不是还要保存吗?
public class DomTest {
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document document = null;
File f = null; public static void main(String[] arg)
{
try
{
f = new File(arg[0]); //外部XML文件
builder = factory.newDocumentBuilder();
document = builder.parse(f);
//创建一个新的元素
Element e = document.createElement("aaaaaaaa");
//添加到XML文件中
document.getDocumentElement().appendChild(e);
}
catch(Exception)
{}
}
}
程序执行正常,没有报错,但是当我打开XML文件时,却发现XML文件的内容没有发生变化,创建的新元素没有添加到XML文件中去。这是什么原因,请各位高手指点。
用JAVA对XML文件进行修改后是不是还要保存吗?
* 将xml文档写入到输出流
* @param document Document 要操作的文档
* @param os OutputStream 要写入的输出流
* @throws XmlOperationException 抛出自定义的xml操作异常
*/
public static void writeXmlDocumentToOutputStream(Document document,
OutputStream os) throws XmlOperationException { if (document == null) {
LogUtil.log("[XML] 将document写入输出流时发生异常,document为空。" +
"在XMLUtil方法writeXmlDocumentToOutputStream方法中。",
LogLevel.ERROR);
throw new XmlOperationException(
"将document写入输出流时发生异常,document为空。" +
"在XMLUtil方法writeXmlDocumentToOutputStream方法中。");
}
if (os == null) {
LogUtil.log("[XML] 将document写入输出流时发生异常,OutputStream为空。" +
"在XMLUtil方法writeXmlDocumentToOutputStream方法中。",
LogLevel.ERROR);
throw new XmlOperationException(
"将document写入输出流时发生异常,OutputStream为空。" +
"在XMLUtil方法writeXmlDocumentToOutputStream方法中。");
} // if(document instanceof XmlDocument) {
// Crimson writer
// XmlDocument xdoc = (XmlDocument) document;
// xdoc.write(os);
// }
// else {
// Xerces writer
OutputFormat format = new OutputFormat(document);
format.setIndent(2); try { XMLSerializer serializer = new XMLSerializer(os, format);
serializer.asDOMSerializer();
serializer.serialize(document.getDocumentElement()); }
catch (java.io.IOException e) { e.printStackTrace(); LogUtil.log("[XML] 将document写入输出流时发生IO异常。" +
"在XMLUtil方法writeXmlDocumentToOutputStream方法中。异常信息:" +
e.getMessage(),
LogLevel.ERROR);
throw new XmlOperationException(
"将document写入输出流时发生IO异常。" +
"在XMLUtil方法writeXmlDocumentToOutputStream方法中。", e); }
// }
}用这个方法就可以了。
writeXmlDocumentToOutputStream(document,new FileOutputStream(new File("文件输出路径")));