dom4j对xpath的支持很好的方便了对具体某个节点的遍历,使用xpath遍历时,需要jaxen-1.1.1.jar 的支持 <?xml version="1.0" encoding="UTF-8"?> <ROWDATA> <ROW> <EMPNO>7499</EMPNO> <ENAME firstname="zhang" lastname="shanfeng">ALLEN</ENAME> <JOB type="basic">SALESMAN</JOB> <MGR>7698</MGR> <HIREDATE>1981-2-20</HIREDATE> <SAL>3200.0</SAL> <COMM>300.00</COMM> <DEPTNO>30</DEPTNO> </ROW> <ROW> <EMPNO>7566</EMPNO> <ENAME>JONES</ENAME> <JOB>MANAGER</JOB> <MGR>7839</MGR> <HIREDATE>1981-4-2</HIREDATE> <SAL>5950.0</SAL> <COMM /> <DEPTNO>20</DEPTNO> </ROW> </ROWDATA> package com.beckham.dom; import java.io.File; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * @author 作者<Beckham> Email:gaowm0207@gmail.com Jan 29, 2010 9:37:44 AM * Version:1.0 XPATH解析xml文件 */ public class XPathXML { public static void main(String[] args) throws Exception { readFile("src/com/beckham/dom/person.xml"); } @SuppressWarnings({ "unchecked", "unchecked" }) public static void readFile(String fileName) throws Exception{ SAXReader reader = new SAXReader() ; Document document = reader.read(new File(fileName)) ; List<Element> list = document.selectNodes("ROWDATA/ROW/DEPTNO") ; for(Element e :list){ System.out.println(e.getName()+"="+e.getText()); } //遍历属性 属性名前面加 @ List<Attribute> listAtt = document.selectNodes("ROWDATA/ROW/ENAME/@firstname") ; for(Attribute att :listAtt){ System.out.println(att.getName()+"="+att.getText()); } } }