浅谈XML 解析技术(二) Dom 解析
2015-10-29 16:15
399 查看
【1. students_dom.xml】
【2. DomParseXML.java】
【注:源代码下载
D_parse_xml.zip】
<?xml version="1.0" encoding="UTF-8"?> <Students> <!--这是第1个Student 元素--> <Student grade="2" index="1"> <Name>zong_0</Name> <Age>20</Age> <Sex>boy</Sex> <Address>beijing No.0</Address> <Number>1000</Number> </Student> <!--这是第2个Student 元素--> <Student grade="1" index="2"> <Name>zong_1</Name> <Age>21</Age> <Sex>girl</Sex> <Address>beijing No.1</Address> <Number>1001</Number> </Student> <!--这是第3个Student 元素--> <Student grade="2" index="3"> <Name>zong_2</Name> <Age>22</Age> <Sex>boy</Sex> <Address>beijing No.2</Address> <Number>1002</Number> </Student> <!--这是第4个Student 元素--> <Student grade="1" index="4"> <Name>zong_3</Name> <Age>23</Age> <Sex>girl</Sex> <Address>beijing No.3</Address> <Number>1003</Number> </Student> <!--这是第5个Student 元素--> <Student grade="2" index="5"> <Name>zong_4</Name> <Age>24</Age> <Sex>boy</Sex> <Address>beijing No.4</Address> <Number>1004</Number> </Student> <!--这是第6个Student 元素--> <Student grade="1" index="6"> <Name>zong_5</Name> <Age>25</Age> <Sex>girl</Sex> <Address>beijing No.5</Address> <Number>1005</Number> </Student> <!--这是第7个Student 元素--> <Student grade="2" index="7"> <Name>zong_6</Name> <Age>26</Age> <Sex>boy</Sex> <Address>beijing No.6</Address> <Number>1006</Number> </Student> <!--这是第8个Student 元素--> <Student grade="1" index="8"> <Name>zong_7</Name> <Age>27</Age> <Sex>girl</Sex> <Address>beijing No.7</Address> <Number>1007</Number> </Student> <!--这是第9个Student 元素--> <Student grade="2" index="9"> <Name>zong_8</Name> <Age>28</Age> <Sex>boy</Sex> <Address>beijing No.8</Address> <Number>1008</Number> </Student> <!--这是第10个Student 元素--> <Student grade="1" index="10"> <Name>zong_9</Name> <Age>29</Age> <Sex>girl</Sex> <Address>beijing No.9</Address> <Number>1009</Number> </Student> </Students>
【2. DomParseXML.java】
package org.zgf.xml.dom; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.zgf.model.Student; /** * @Description: 使用Dom 解析xml * @author zonggf * @date 2015年10月29日-下午3:43:11 */ public class DomParseXML { private static String fileName = "xml/students_dom.xml"; /** 获取第一个元素的内容 */ private static String getFirstNodeNameValue(NodeList nodeList) { if (null == nodeList || nodeList.getLength() == 0) { return null; } Element element = (Element) nodeList.item(0); if (null == element.getFirstChild()) { return null; } return element.getFirstChild().getNodeValue(); } @Test public void test_readXML() throws Exception { List<Student> studentList = new ArrayList<>(); // 1. 获取DocumentBuilder 工厂 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // 2. 获取DocumentBuilder 对象 DocumentBuilder db = dbf.newDocumentBuilder(); // 3. 获取Document对象 Document document = db.parse(new File(fileName)); // 4. 获取根节点 Element rootElement = document.getDocumentElement(); System.out.println("根节点:" + rootElement.getNodeName()); // 5. 获取节点列表 NodeList studentNodeList = rootElement.getElementsByTagName("Student"); for (int i = 0; i < studentNodeList.getLength(); i++) { Element studentElement = (Element) studentNodeList.item(i); // 根据属性名称获取属性值 String gradeAttribute = studentElement.getAttribute("grade"); String index = studentElement.getAttribute("index"); // 获取子节点元素 NodeList nameElements = studentElement.getElementsByTagName("Name"); NodeList numberElements = studentElement.getElementsByTagName("Number"); NodeList ageElements = studentElement.getElementsByTagName("Age"); NodeList sexElements = studentElement.getElementsByTagName("Sex"); NodeList addressElements = studentElement.getElementsByTagName("Address"); // 封装对象 Student student = new Student(); student.setName(getFirstNodeNameValue(nameElements)); student.setNumber(getFirstNodeNameValue(numberElements)); student.setAge(getFirstNodeNameValue(ageElements)); student.setSex(getFirstNodeNameValue(sexElements)); student.setAddress(getFirstNodeNameValue(addressElements)); student.setGrade(gradeAttribute); studentList.add(student); } // 输出对象 for (Student student : studentList) { System.out.println(student); } } @Test public void test_creatXMLFile() throws Exception { } }
【注:源代码下载
D_parse_xml.zip】
相关文章推荐
- 耳机与air mp3播放
- StringBuilder
- php新版本废弃 preg_replace /e 修饰符
- 个人笔记 js 05 关闭子页面的方法
- 测试 unistd.h 中的getopt
- HTML学习 <6>
- IOS开发配置发布证书
- Mysql学习笔记之常用数据类型
- 开始写博客啦
- 系统提供的默认activity(拨打电话,发送短信,发送彩信,打开浏览器,发邮件,拍照)...
- nginx源码分析—内存池结构ngx_pool_t及内存管理
- 7个答案告诉你实时个性化营销的现状未来
- 很讲究的雕爷牛腩
- Android圆形图片--自定义控件
- SendMessage与PostMessage
- JAVA操作Excel文件
- 助程序员快速成长 荐10大在线编程网站
- VS2012快捷键大全
- 2015-10-29
- jq选择器对象筛选