DOM4J是一个开源的,基于Java的库来解析XML文档,它具有高度的灵活性,高性能和内存效率的API。这是java的优化,使用Java集合像列表和数组。它可以使用DOM,SAX,XPath和XSLT。它解析大型XML文档时具有极低的内存占用。
接下来我们开始使用它吧!
创建XML文档
package com.imikasa;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.FileOutputStream;
import java.io.IOException;
public class Dom4jCreateUtil {
public static void main(String[] args) throws IOException {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("books");
Element book = root.addElement("book").addAttribute("id","01");
book.addElement("name").addText("ssa");
book.addElement("price").addText("120");
OutputFormat prettyPrint = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("book3.xml"),prettyPrint);
xmlWriter.write(document);
}
}
可以看出使用这种方法创建XML文档比使用JDOM更简洁
解析XML
package com.imikasa;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.List;
public class Dom4hUtil {
public static void main(String[] args) throws DocumentException {
SAXReader saxReader = new SAXReader();
Document book3 = saxReader.read(new File("book3.xml"));
Element rootElement = book3.getRootElement();
List<Element> childElement = rootElement.elements();
for (Element child : childElement) {
//未知属性名情况下
/*List<Attribute> attributeList = child.attributes();
for (Attribute attr : attributeList) {
System.out.println(attr.getName() + ": " + attr.getValue());
}*/
//已知属性名情况下
System.out.println("id: " + child.attributeValue("id"));
//未知子元素名情况下
/*List<Element> elementList = child.elements();
for (Element ele : elementList) {
System.out.println(ele.getName() + ": " + ele.getText());
}
System.out.println();*/
//已知子元素名的情况下
System.out.println("name:" + child.elementText("name"));
System.out.println("price:" + child.elementText("price"));
System.out.println("===========");
}
}
}
网友评论