(三)DOM4j属性
//1.取得属性的名、值
String name = attribute.getName();
String value = attribute.getValue();
//2.设置某属性的名、值
attribute.setName();
attribute.setValue();
(四)DOM4j字符串和XML的转换
//1.将字符串转化为XML
String text = "<members> <member>sitinspring</member></members>";Document document = DocumentHelper.parseText(text);
//2.将文档或节点的XML转化为字符串.
String xmlStr = node.asXML();
(五)DOM4j将文档写入XML文件
方式一:
调用Node提供的write(Writer writer) 方法,使用默认方式将节点输出到流中:
node.write(new FileWriter("book.xml"));
乱码问题:Dom4j在将文档载入内存时使用的是文档声明中encoding属性声明的编码集进行编码,如果在此时使用的writer的内部编码集与最初载入内存时使用的编码集不同则会出现乱码问题。FileWriter默认使用操作系统本地码表即gb2312编码,并且无法更改。此时可以使用如下的方式自己封装一个指定码表的Writer使用,从而解决乱码问题。
OutputStreamWriter(FileOutputStream("filePath"),"utf-8");
方式二:
利用XMLWriter写出Node:
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
writer.write(node); writer.close();
注意:使用这种方式输出时,XMLWriter首先会将内存中的docuemnt翻译成UTF-8格式的document再进行输出,这时有可能出现乱码问题。可以使用OutputFormat 指定XMLWriter转换的编码为其他编码。
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter writer = new XMLWriter(newFileWriter("output.xml"),format);
Writer使用的编码集与文档载入内存时使用的编码集不同导致乱码,使用字节流或自己封装指定编码的字符流即可。
(六)DOM4j–DocumentHelper
createDocument();
createDocument(Element rootEle
createAttribute(Element owner, String name, String value));
createElement(String name);
Docuemnt parseText(String text);
5. DOM4J编码示例
入门示例:针对上面的book.xml打印第一本书的名字:
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4jDemo1 {
public static void main(String[] args) throws Exception {
//1.获取解析器
SAXReader reader = new SAXReader();
//2.解析xml获取代表整个文档的dom对象
Document dom = reader.read("book.xml");
//3.获取根节点
Element root = dom.getRootElement();
//4.获取书名进行打印
String bookName = root.element("书").element("书名").getText();
System.out.println(bookName);
}
}
示例2:对dom元素和属性进行增删改查的操作
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-47696-5.html
省事
金华王子们又受打击