分享一个dom4j解析xml的一个小例子,其实在项目开发中dom4j用的并不多,网上有很多相关的例子,做一个简单的测试:
定义一个xml文件,名称为User.hbm.xml,内容为:
<hibernate-mapping>
<class name="cn.com.gjw.User" table="t_user">
<property name="username"></property>
<property name="password"></property>
</class>
</hibernate-mapping>
简单测试:
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
/**
* @author gjw
* 使用dom4j解析XML
*/
public class XMLTest {
public static void main(String[] args) throws Exception {
//用到的jar包为: dom4j-1.6.1.jar
SAXReader reader = new SAXReader();
Document document = reader.read(new File("User.hbm.xml"));
//获取根节点
Element rootElement = document.getRootElement();
System.out.println(rootElement.getName());
//获取子节点
for(Iterator iterator = rootElement.elementIterator(); iterator.hasNext();) {
Element element = (Element) iterator.next();
System.out.println(element.getName());
//获取子节点对应的属性
for (Iterator iterator2 = element.attributeIterator(); iterator2.hasNext();) {
Attribute attribute = (Attribute) iterator2.next();
System.out.println(attribute.getName() + " = " + attribute.getValue());
}
}
//使用xpath解析 用到的jar包为:jaxen-1.1.6.jar
List<Node> list = document.selectNodes("//hibernate-mapping/class/property");
for (Node node : list) {
System.out.println(node.getName());
//将node节点中名为name的属性打印出来。@代表属性
System.out.println(node.valueOf("@name"));
}
}
}