1.读取XML文件
public Document readXML(String fileName) throws Exception
{
SAXReader sReader = new SAXReader();
Document doc = sReader.read(new File(fileName));
return doc;
}
其中read可以是File,Url,InputStream
2.取得Root节点
public Element getRoot(Document doc)
{
return doc.getRootElement;
}
3.遍历XML树
1)Iterator
2) 递归
3)Visitor模式
4.转字符串
doc.XMLText
5.转XML
doc = DocumentHelper.parseText(String)
6.创建XML
Document doc = DocumentHelper.createDocument();
Element root = doc.createElement(root);
Element author = root.addElement(author).addAttrubate(name, value).addText(Text);
...
7.输出
FileWriter writer = new FileWriter(xmlFile);
writer.write();
8.格式输出
public void write(Document document) throws IOException {
// 指定文件
XMLWriter writer = new XMLWriter(
new FileWriter( output.xml )
);
writer.write( document );
writer.close();
// 美化格式
OutputFormat format = OutputFormat.createPrettyPrint();
writer = new XMLWriter( System.out, format );
writer.write( document );
// 缩减格式
format = OutputFormat.createCompactFormat();
writer = new XMLWriter( System.out, format );
writer.write( document );
}
9.中文乱码
在用 dom4j 以 utf8 编码格式生成 xml 文档后,发现该 xml 文档包含中文的部分异常,无法读取。随后被逼无奈,只好使出猥琐招数,直接将要写入 xml 的字符串重新以 utf8 格式编码后再写入 xml:
str = new String(str.getBytes(), "UTF8");
终于,xml 文档异常消除,可以正常读取。然而,其中的中文部分是却乱码,悲了个剧,事情为什么是这个样子呢?
终于知道:问题在于 FileWriter 类的滥用,将 FileWriter 改为 FileOutputStream 之后,问题解决。
1 dom4j 中 XMLWriter 对文件的处理过程: