XML解析
发布时间:2020-12-16 00:40:36 所属栏目:百科 来源:网络整理
导读:XML示例: ?xml version="1.0" encoding='utf-8'? !-- 声明--studentList !-- 根元素,一个XML文件有且只有一个根元素,所有的元素和子元素都必须在根元素中定义-- student id="1" name张三/name sex男/sex birthday1986-12-21/birthday /student student id
XML示例: <?xml version="1.0" encoding='utf-8'?> <!-- 声明--> <studentList> <!-- 根元素,一个XML文件有且只有一个根元素,所有的元素和子元素都必须在根元素中定义--> <student id="1"> <name>张三</name> <sex>男</sex> <birthday>1986-12-21</birthday> </student> <student id="2"> <name>李四</name> <sex>女</sex> <birthday>1990-09-10</birthday> </student> <student id="3"> <name>王五</name> <sex>男</sex> <birthday>1989-03-20</birthday> </student> <student id="4"> <name>赵六</name> <sex>男</sex> <birthday>1985-05-23</birthday> </student> </studentList>
package com.lovo.test; import java.sql.Date; import java.util.ArrayList; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.lovo.bean.Student; public class DomTest { /** * 解析XML,将XML的数据封装成List集合 * * @return Student对象的集合 */ public List<Student> getList() { List<Student> list = new ArrayList<Student>(); SAXReader sax = new SAXReader();// 产生sax解析对象 try { Document doc = sax.read("student.xml"); // 读取文档,将文档内容封装成Document对象 // 读取Student根元素下的student子元素,返回所有student标记的元素集合,一个Element封装一个student标记 List<Element> eleList = doc.selectNodes("/studentList/student"); for (Element e : eleList) { Student s = new Student(); String idStr = e.attributeValue("id");// 得到每个student标记中的id属性的值 String name = e.elementText("name");// 得到student子标签name中间的内容 String sex = e.elementText("sex");// 得到student子标签sex中间的内容 String birthday = e.elementText("birthday");// 得到student子标签birthday中间的内容 // 将XML中student标记得到的数据封装成Student对象 s.setId(Integer.parseInt(idStr)); s.setName(name); s.setSex(sex); s.setBirthday(Date.valueOf(birthday)); list.add(s); } } catch (Exception e) { e.printStackTrace(); } return list; } public static void main(String[] args) { DomTest d = new DomTest(); List<Student> list = d.getList(); System.out.println(list); } }
package com.lovo.bean; import java.sql.Date; public class Student implements java.io.Serializable{ private int id; private String name; private String sex; private Date birthday; public Student() { super(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String toString(){ return this.id+" "+this.name+" "+this.sex+" "+this.birthday; } }
<?xml version="1.0" encoding="GB2312" ?> <!DOCTYPE 家庭 [ <!-- 定义XML文件的根元素为家庭--> <!ELEMENT 家庭 (人+,家电*)> <!--定义元素家庭的子元素有人和家电,人至少有一个,没有上限;家电可以没有,也可以有多个 --> <! ELEMENT 人 (#PCDATA)> <!-- 表示人标记中的内容为文本 --> <!ELEMENT 家电 EMPTY> <!-- 表示空标记,标记之间没有内容 --> <!ATTLIST 人 名字 CDATA #REQUIRED 性别 (男|女) #REQUIRED 年龄 CDATA #REQUIRED 爱好 CDATA #IMPLIED > <!-- 表示定义人标记的属性,CDATA表示该属性的内容为文本,在书写标记时, #REQUIRED表示该属性必须存在,#IMPLIED表示该属性可有可无,(男|女)表示该属性的取值为男或女 --> <!ATTLIST 家电 名称 CDATA #REQUIRED 数量 CDATA #REQUIRED 说明 CDATA #IMPLIED > ]> <家庭> <!-- 符合上面DTD规范的XML示例 --> <人 名字="郭大路" 性别="男" 年龄="25">ffff</人> <人 名字="李寻欢" 性别="男" 年龄="38" 爱好="看书"/> <家电 名称="彩电" 数量="3"/> </家庭> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |