[Java] XML 解析 与 Dom4j 的使用
DOM4JTest.java
package com.bjsxt.dom4j; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentException; 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 { 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(); // do something p(element.getName()); // 枚举属性 for (Iterator j = element.attributeIterator(); j.hasNext();) { Attribute attribute = (Attribute) j.next(); // do something p(attribute.getName() + "-" + attribute.getValue()); } } // xpath = xml+path List<Node> list = document.selectNodes("//hibernate-mapping/class/property"); //Node node = document.selectSingleNode("//hibernate-mapping/class/property"); 只拿第一个 //String name = node.valueOf( @name ); for (Node n : list) { p(n.getName()); p(n.valueOf("@name")); } createDocument(); } public static void p(Object o) { System.out.println(o); } 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"); /* FileWriter out = new FileWriter("User1.hbm.xml"); document.write(out); out.flush(); out.close(); */ // 美化格式 OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter writer = new XMLWriter( new FileWriter( "User2.hbm.xml" ), format ); writer.write( document ); writer.close(); return document; } }User.hbm.xml
<hibernate-mapping> <class name="com.bjsxt.User" table="t_user"> <property name="username"></property> <property name="password"></property> </class> </hibernate-mapping>User2.hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <hibernate-mapping> <class name="com.bjsxt.User" table="t_user"> <property name="username"/> </class> </hibernate-mapping>--
---