1.XML→Document
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Namespace;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.Iterator;
public class DomTest {
public static void main(String[] args){
SAXReader reader = new SAXReader();
try {
Document doc = reader.read(new File("D:\\Download\\tmp\\pczz001.xml"));
Element root = doc.getRootElement();
Namespace namespace = root.getNamespace();
System.out.println("namespace:"+namespace);
String name = root.getName();
System.out.println("name:"+name);
Object data = root.getData();
//System.out.println("data:"+data);
String text = root.getTextTrim();
System.out.println("textTrim:"+text);
String qualifiedName = root.getQualifiedName();
System.out.println("qualifiedName:"+qualifiedName);
short nodeType = root.getNodeType();
System.out.println("nodeType:"+nodeType);
String nodeTypeName = root.getNodeTypeName();
System.out.println("nodeTypeName:"+nodeTypeName);
int nodes = root.nodeCount();
System.out.println("nodeCount:"+nodes);
System.out.println("-------------------------下面是child nodes----------------------------------");
Iterator iterator = root.elementIterator();
int i = 0;
while(iterator.hasNext()){
if(i!=0 && i!=1){
return;
}
Element next = (Element) iterator.next();
String name1 = next.getName();
System.out.println("next---name1:"+name1);
String textTrim = next.getTextTrim();
System.out.println("next---textTrim:"+textTrim);
Iterator iterator1 = next.elementIterator();
while(iterator1.hasNext()){
Element next1 = (Element) iterator1.next();
String name2 = next1.getName();
System.out.println("next1---name2:"+name2);
String text1 = next1.getText();
System.out.println("next1---text1:"+text1);
}
i++;
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
小结:主要利用SAXReader()对象读取文件获得Document对象,进而利用Document对象对之处理。
2.Document→XML
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import java.io.FileWriter;
import java.io.IOException;
public class DomTest2 {
public static void main(String[] args){
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");
Element element1 = root.addNamespace("wocao", "www");
Element header = root.addElement("header");
Element body = root.addElement("body");
Element author = header.addElement("author");
Element y = author.addText("y");
Element element = author.addAttribute("gender", "man");
Element age = author.addAttribute("age", "18");
Element data = body.addElement("data");
Element invincible = data.addText("老子天下无敌");
try {
FileWriter fileWriter = new FileWriter("foo.xml");
document.write(fileWriter);
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
小结:利用DocumentHelper创建Document对象,利用Document对象方法完善Document对象,最后也是用Document对象的write方法写入到FileWriter中。
总结:1.处理XML三种方式:https://www.ibm.com/developerworks/cn/xml/dm-1208gub/index.html。DOM解析是一次加载全部XML到内存,可对XML增减;SAXReader是流式处理,只可查询,适用于大的XML文件;Digester是将XML转换为JavaBean,多用于框架。
2.Dom4j官网:https://dom4j.github.io/#creating-document。