package com.bjsxt.dom4j; import java.io.File; import java.io.FileWriter; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class DOM4JTest { public static void main(String[] args) throws Exception{ ReadXML(); CreateDocument(); } // 输出 public static void p(Object o){ System.out.println(o); } // 生成XML文件 public static Document CreateDocument() throws Exception{ Document document = DocumentHelper.createDocument(); Element root = document.addElement("hibernate-mapping"); Element classElement = root.addElement("class") .addAttribute("name", "com.bjsxt.User") .addAttribute("table", "t_user"); classElement.addElement("property") .addAttribute("name", "username") .addAttribute("name", "password"); OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter(new FileWriter("User1.hbm.xml"), format); writer.write(document); writer.close(); return document; } // 读取XML文件 public static void ReadXML() throws Exception{ SAXReader reader = new SAXReader(); Document document = reader.read(new File("User.hbm.xml")); Element rootElement = document.getRootElement(); p(rootElement.getName()); for(Iterator i = rootElement.elementIterator(); i.hasNext();){ Element element = (Element) i.next(); p(element.getName()); for(Iterator j = element.attributeIterator(); j.hasNext();){ Attribute attribute = (Attribute) j.next(); p(attribute.getName() + "_" + attribute.getValue()); } for(Iterator k = element.elementIterator(); k.hasNext();){ Element subElement = (Element) k.next(); p(subElement.getName()); for(Iterator l = subElement.attributeIterator(); l.hasNext();){ Attribute subAttribute = (Attribute) l.next(); p(subAttribute.getName() + "_" + subAttribute.getValue()); } } } // xpath List<Node> list = document.selectNodes("//hibernate-mapping/class/property"); for(Node n : list){ p(n.getName()); p(n.valueOf("@name")); } } }