<?xml version="1.0" encoding="UTF-8"?> <groups> <stu id="001"> <name>zero001</name> <email>[email protected]</email> </stu> <stu id="002"> <name>zero002</name> <email>[email protected]</email> </stu> </groups>Dom4jRead.java
import java.io.File; import java.util.Iterator; import java.util.List; import org.dom4j.*; import org.dom4j.io.SAXReader; public class Dom4jRead { public static void main(String[] args) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(new File("default.xml")); Element rootElement = document.getRootElement();// 根节点 System.out.println("根节点: " + rootElement.getName()); // 枚举所有子节点 for (Iterator it = rootElement.elementIterator(); it.hasNext();) { Element element = (Element) it.next(); System.out.println(element.getName()); } // 枚举名称为xxx的节点的子节点 for (Iterator it = rootElement.element("stu").elementIterator(); it .hasNext();) { Element element = (Element) it.next(); System.out.print(element.getName() + ": "); System.out.println(element.getText()); System.out.println(element.getStringValue()); } // 枚举属性 for (Iterator it = rootElement.element("stu").attributeIterator(); it .hasNext();) { Attribute attribute = (Attribute) it.next(); System.out .println(attribute.getName() + "=" + attribute.getValue()); } // rootElement.element("stu"), 取第一个stu // List list = rootElement.elements("stu"); 取所有stu } }Dom4jWrite.java
import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import org.dom4j.*; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; public class Dom4jWrite { public static void main(String[] args) { Document document = DocumentHelper.createDocument(); Element root = document.addElement("groups"); Element stuElement = root.addElement("stu"); Element nameElement = stuElement.addElement("name"); Element ageElement = stuElement.addElement("age"); nameElement.addAttribute("id", "1").setText("萧"); ageElement.setText("18"); Element stu = DocumentHelper.createElement("stu"); stu.add(DocumentHelper.createElement("name")); stu.add(DocumentHelper.createElement("age")); document.getRootElement().add(stu); // 删除 // stu.getParent().remove(stu); try { // FileWriter out = new FileWriter("my.xml"); // document.write(out); // out.flush(); // out.close(); // 格式美化 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); // XMLWriter writer = new XMLWriter(new FileWriter("out.xml"), // format); XMLWriter writer = new XMLWriter(new FileOutputStream("out.xml"), format); writer.write(document); writer.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }运行结果:out.xml
<?xml version="1.0" encoding="UTF-8"?> <groups> <stu> <name id="1">萧</name> <age>18</age> </stu> <stu> <name/> <age/> </stu> </groups>
<?xml version="1.0" encoding="UTF-8"?> <AAA> <BBB id="b1"> <CCC> <DDD>d</DDD> </CCC> </BBB> <BBB id="b2" /> <BBB> <DDD>d</DDD> </BBB> <BBB name="bbb" /> </AAA>Dom4jXpath.xml
import java.io.File; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Dom4jXpath { // dom4j 配合 xpath public static void main(String[] args) throws Exception { // TODO Auto-generated method stub SAXReader reader = new SAXReader(); Document document = reader.read(new File("xpath.xml")); List eList = document.selectNodes("/AAA"); System.out.println(eList.size());// 1 eList = document.selectNodes("/AAA/BBB"); System.out.println(eList.size());// 4 eList = document.selectNodes("/AAA/CCC"); System.out.println(eList.size());// 0 eList = document.selectNodes("//DDD");// 不管层级关系,直接取得DDD节点 System.out.println(eList.size());// 2 // document.selectNodes("/AAA/BBB/*"); AAA/BBB/下的所有节点 // document.selectNodes("/*/*/CCC"); 有两个父节点的CCC节点 // /AAA/BBB[1],/AAA/BBB[last()] } }