国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

使用Dom4j解析XML文件

2019-11-14 21:35:04
字體:
供稿:網(wǎng)友
使用Dom4j解析xml文件

與利用DOM、SAX、JAXP機(jī)制來解析xml相比,DOM4J 表現(xiàn)更優(yōu)秀,具有性能優(yōu)異、功能強(qiáng)大和極端易用使用的特點(diǎn),只要懂得DOM基本概念,就可以通過dom4j的api文檔來解析xml。dom4j是一套開源的api。實(shí)際項(xiàng)目中,往往選擇dom4j來作為解析xml的利器。

所用jar包:dom4j-1.6.1.jar

常用API

class org.dom4j.io.SAXReader

  • read 提供多種讀取xml文件的方式,返回一個(gè)Domcument對(duì)象

interface org.dom4j.Document

  • iterator 使用此法獲取node
  • getRootElement 獲取根節(jié)點(diǎn)

interface org.dom4j.Node

  • getName 獲取node名字,例如獲取根節(jié)點(diǎn)名稱為bookstore
  • getNodeType 獲取node類型常量值,例如獲取到bookstore類型為1——Element
  • getNodeTypeName 獲取node類型名稱,例如獲取到的bookstore類型名稱為Element

interface org.dom4j.Element

  • attributes 返回該元素的屬性列表
  • attributeValue 根據(jù)傳入的屬性名獲取屬性值
  • elementIterator 返回包含子元素的迭代器
  • elements 返回包含子元素的列表

interface org.dom4j.Attribute

  • getName 獲取屬性名
  • getValue 獲取屬性值

interface org.dom4j.Text

  • getText 獲取Text節(jié)點(diǎn)值

interface org.dom4j.CDATA

  • getText 獲取CDATA Section值

interface org.dom4j.Comment

  • getText 獲取注釋

需要解析的xml文件:people.xml

1 <people city="BeiJing">2     <student name="Jack" age="10">My name is Jack!</student>3     <student name="Lucy" age="11">My name is Lucy!</student>4     <student name="James" age="12"/>5     <teacher name="Jason" age="25">I am a teacher!</teacher>6     <teacher name="Michael" age="30">I am a teacher too!</teacher>7 </people>
people.xml

首先根據(jù)xml文檔構(gòu)建javabean:

 1 package bean; 2  3 import java.util.List; 4  5 public class People { 6     PRivate String city; 7     private List<Student> student; 8     private List<Teacher> teacher; 9     10     public String getCity() {11         return city;12     }13     public void setCity(String city) {14         this.city = city;15     }16     public List<Student> getStudent() {17         return student;18     }19     public void setStudent(List<Student> student) {20         this.student = student;21     }22     public List<Teacher> getTeacher() {23         return teacher;24     }25     public void setTeacher(List<Teacher> teacher) {26         this.teacher = teacher;27     }28 }
People.java
 1 package bean; 2  3 public class Student { 4     private String name; 5     private int age; 6     private String text; 7     public String getName() { 8         return name; 9     }10     public void setName(String name) {11         this.name = name;12     }13     public int getAge() {14         return age;15     }16     public void setAge(int age) {17         this.age = age;18     }19     public String getResult() {20         return text;21     }22     public void setResult(String result) {23         this.text = result;24     }25     public Student(String name, int age, String text) {26         super();27         this.name = name;28         this.age = age;29         this.text = text;30     }31 }
Student.java
 1 package bean; 2  3 public class Teacher { 4     private String name; 5     private int age; 6     private String text; 7     public String getName() { 8         return name; 9     }10     public void setName(String name) {11         this.name = name;12     }13     public int getAge() {14         return age;15     }16     public void setAge(int age) {17         this.age = age;18     }19     public String getResult() {20         return text;21     }22     public void setResult(String result) {23         this.text = result;24     }25     public Teacher(String name, int age, String text) {26         super();27         this.name = name;28         this.age = age;29         this.text = text;30     }31 }
Teacher.java
解析代碼如下:
 1 package xml; 2  3 import java.io.File; 4 import java.net.URISyntaxException; 5 import java.util.ArrayList; 6 import java.util.Iterator; 7 import java.util.List; 8  9 import org.dom4j.Document;10 import org.dom4j.DocumentException;11 import org.dom4j.Element;12 import org.dom4j.io.SAXReader;13 14 import bean.People;15 import bean.Student;16 import bean.Teacher;17 18 public class Dom4jParserXML {19     public static People parseXml(String xmlPath) {20         File xmlFile = new File(xmlPath);21         System.out.println(xmlFile.getPath());22         23         if (xmlFile.exists()) {24             SAXReader reader = new SAXReader();25             People people = new People();26             try {27                 // 讀入文檔流28                 Document document = reader.read(xmlFile);29                 // 獲取根節(jié)點(diǎn)30                 Element root = document.getRootElement();31 32                 List<Student> students = new ArrayList<Student>();33                 List<Teacher> teachers = new ArrayList<Teacher>();34                 35                 people.setCity(root.attributeValue("city"));36                 // 解析student節(jié)點(diǎn)37                 for (Iterator<Element> iterator = root38                         .elementIterator("student"); iterator.hasNext();) {39                     Element eStudent = iterator.next();40                     String text = eStudent.getText();41                     42                     Student student = new Student(43                             eStudent.attributeValue("name"),44                             Integer.parseInt(eStudent.attributeValue("age")),text);45                     students.add(student);46                 }47                 // 解析teacher節(jié)點(diǎn)48                 for (Iterator<Element> iterator = root49                         .elementIterator("teacher"); iterator.hasNext();) {50                     Element eTeacher = iterator.next();51                     String text = eTeacher.getText();52                     53                     Teacher teacher = new Teacher(54                             eTeacher.attributeValue("name"),55                             Integer.parseInt(eTeacher.attributeValue("age")),text);56                     teachers.add(teacher);57                 }58                 people.setStudent(students);59                 people.setTeacher(teachers);60                 61                 System.out.println("Parse success!");62             } catch (DocumentException e) {63                 e.printStackTrace();64             }65             return people;66         } else {67             System.err.println("File is not exist!");68             return null;69         }70     }71 72     public static void main(String[] args) throws URISyntaxException {73         String xmlPath = "E://xml//people.xml";74         System.out.println("File full path is " + xmlPath);75         // 解析people.xml76         People p = parseXml(xmlPath);77 78         // 處理解析結(jié)果79         System.out.println("The city is : " + p.getCity());80         List<Student> sList = p.getStudent();81         List<Teacher> tList = p.getTeacher();82         for (Student s : sList) {83             System.out.println(s.getName() + "->" + s.getAge() + "->" + s.getResult());84         }85         for (Teacher t : tList) {86             System.out.println(t.getName() + "->" + t.getAge() + "->" + t.getResult());87         }88     }89 }

運(yùn)行結(jié)果:

File full path is E://xml//people.xmlE:/xml/people.xmlParse success!The city is : BeiJingJack->10->My name is Jack!Lucy->11->My name is Lucy!James->12->Jason->25->I am a teacher!Michael->30->I am a teacher too!
Result
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 梨树县| 七台河市| 全椒县| 资源县| 彭泽县| 汉川市| 鸡泽县| 龙州县| 耒阳市| 巩留县| 荃湾区| 洛南县| 丰宁| 永仁县| 陕西省| 北安市| 突泉县| 维西| 兴宁市| 邯郸市| 东至县| 临桂县| 隆尧县| 双江| 阿合奇县| 岢岚县| 莲花县| 栾川县| 福清市| 法库县| 辽阳市| 玛多县| 柘城县| 来安县| 陇南市| 肇东市| 辽阳县| 瑞昌市| 溧阳市| 景谷| 太湖县|