首页 > 代码库 > java通过dom4j处理xml文档

java通过dom4j处理xml文档

最近在用dom4j处理xml的数据接口,将java利用dom4j处理xml的过程记录下来。

导入jar包:dom4j-1.6.jar

下载地址:http://www.java2s.com/Code/JarDownload/dom4j/dom4j-1.6.jar.zip

自己写了个xml文档

 1 <school> 2     <student> 3         <name>老子</name> 4         <no>20140804</no> 5         <majors> 6             <major>体育</major> 7             <major>美术</major> 8             <major>舞蹈</major> 9         </majors>10     </student>11    <student>12         <name>孙子</name>13         <no>20140805</no>14         <majors>15             <major>数学</major>16             <major>物理</major>17             <major>英语</major>18         </majors>19     </student>20 </school>

下面是java读取文件的代码

 1 package tools; 2  3 import java.util.Iterator; 4 import org.dom4j.Document; 5 import org.dom4j.DocumentException; 6 import org.dom4j.Element; 7 import org.dom4j.io.SAXReader; 8  9 public class XMLHandler {10     11     public static void main(String[] args) {12         String path = "resource/hello.xml";//可以是本地路径,也可以是网络路径13         SAXReader reader = new SAXReader(); 14         Document doc = null;15         try {16             doc = reader.read(path); //获取整个文档17         } catch (DocumentException e) {18             e.printStackTrace();19             return;20         }21         Element root = doc.getRootElement();//获取到文档的根节点即<school></school>22         Iterator<Element> stus = root.elementIterator("student");//获取<sutdent></student>迭代23         //Iterator<Element> stus = root.elementIterator();  因为school下只有student,这种方法也行24         Element student;25         while(stus.hasNext()) {26             student = stus.next();27             System.out.println("姓名:"+student.elementTextTrim("name"));//获取name子结点的值28             System.out.println("学号:"+student.elementTextTrim("no"));//获取no子结点的值29             30             Element majors = student.element("majors");31             Iterator<Element> major_it = majors.elementIterator("major");32             String major_str = "";33             Element major;34             while(major_it.hasNext()) {35                 major = major_it.next();36                 major_str += major.getTextTrim() + " ";//获取自身结点的值37             }38             System.out.println("专业:"+major_str);39         }40         41     }42 }


显示结果

1 姓名:老子2 学号:201408043 专业:体育 美术 舞蹈 4 姓名:孙子5 学号:201408056 专业:数学 物理 英语