xml文件解析—DOM方式
2018-02-06 09:15
267 查看
1:xml文件
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="1">
<name>猪1戒</name>
<author>老1佳</author>
<year>1631</year>
<price>37.5</price>
</book>
<book id="2">
<name>猪2戒</name>
<author>老2佳</author>
<year>1632</year>
<price>38.5</price>
</book>
<book id="3">
<name>猪3戒</name>
<author>老3佳</author>
<year>1633</year>
<price>39.5</price>
</book>
</bookstore>2:解析代码
一共有:3本书
======开始遍历第1本书=======
第1本书共有1个属性:
节点名:id;节点值:1
第1本书共有9个子节点:
name------猪1戒
author------老1佳
year------1631
price------37.5
======开始遍历第2本书=======
第2本书共有1个属性:
节点名:id;节点值:2
第2本书共有9个子节点:
name------猪2戒
author------老2佳
year------1632
price------38.5
======开始遍历第3本书=======
第3本书共有1个属性:
节点名:id;节点值:3
第3本书共有9个子节点:
name------猪3戒
author------老3佳
year------1633
price------39.5
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="1">
<name>猪1戒</name>
<author>老1佳</author>
<year>1631</year>
<price>37.5</price>
</book>
<book id="2">
<name>猪2戒</name>
<author>老2佳</author>
<year>1632</year>
<price>38.5</price>
</book>
<book id="3">
<name>猪3戒</name>
<author>老3佳</author>
<year>1633</year>
<price>39.5</price>
</book>
</bookstore>2:解析代码
import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; /** * 解析的结果可以建一个java类,放在类中 * * @author Administrator */ public class DomParseXml { public static void main(String[] args) { // 创建一个DocumentBuilderFactory对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { // 创建DocumentBuilder对象,使用parse方法加载xml文件到当前项目下 DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse("resouce/books.xml"); // 获取所有book节点的集合,是所有一级子节点的list集合 NodeList bookList = document.getElementsByTagName("book"); System.out.println("一共有:" + bookList.getLength() + "本书"); // 遍历每一个book节点,获取的是整个书对象 for (int i = 0; i < bookList.getLength(); i++) { System.out.println("======开始遍历第" + (i + 1) + "本书======="); // 通过item(i)方法获取具体book节点,索引从0开始 Node book = bookList.item(i); // 获取book节点的所有属性集合,是一个map集合 NamedNodeMap attrs = book.getAttributes(); System.out.println("第" + (i + 1) + "本书共有" + attrs.getLength() + "个属性:"); // 遍历book的具体属性 for (int j = 0; j < attrs.getLength(); j++) { // 通过item方法获取book节点的某个属性 Node item = attrs.item(j); // 获取节点属性名 String nodeName = item.getNodeName(); // 获取节点属性值 String nodeValue = item.getNodeValue(); System.out .println("节点名:" + nodeName + ";节点值:" + nodeValue); } // 遍历book下面的次节点 NodeList childNodes = book.getChildNodes(); System.out.println("第" + (i + 1) + "本书共有" + childNodes.getLength() + "个子节点:"); for (int k = 0; k < childNodes.getLength(); k++) { // 区分出text类型的node以及element类型的node,只有是element类型的node才输出 if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) { // 获取节点的名称 System.out.print(childNodes.item(k).getNodeName() + "------"); /** * 获取第一个节点的节点值 <name>放学后</name> * name之间的部分会当成一个节点,所以"放学后"会当成第一个子节点的节点值 */ System.out.println(childNodes.item(k).getFirstChild() .getNodeValue()); /** * getTextContent()会获取<name></name>的所有子节点的节点值 * <name><a>aa</a>bb</name>:结果为:aabb * 而.getFirstChild().getNodeValue()的结果为null * 因为第一个节点a为element节点,其节点值为null */ // System.out.println(childNodes.item(k).getTextContent()); } } } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }3:解析结果
一共有:3本书
======开始遍历第1本书=======
第1本书共有1个属性:
节点名:id;节点值:1
第1本书共有9个子节点:
name------猪1戒
author------老1佳
year------1631
price------37.5
======开始遍历第2本书=======
第2本书共有1个属性:
节点名:id;节点值:2
第2本书共有9个子节点:
name------猪2戒
author------老2佳
year------1632
price------38.5
======开始遍历第3本书=======
第3本书共有1个属性:
节点名:id;节点值:3
第3本书共有9个子节点:
name------猪3戒
author------老3佳
year------1633
price------39.5
相关文章推荐
- xml文件--DOM方式解析xml
- XML文件解析(DOM方式)
- QT读写XML文件之DOM方式解析XML
- DOM方式解析XML配置文件
- 用“XML解析开发包Jaxp”对XML文件进行Dom方式的CRUD操作
- 【慕课笔记】2-3 应用DOM方式解析XML—使用 DOM 解析XML 文件的节点名和节点值
- Java眼中的XML--文件读取--1 应用DOM方式解析XML
- 三种方式解析XML(DOM,Pull,Sax,并带文件编码识别).........................by 私念
- DOM方式解析XML配置文件,将数据保存成数组
- 【慕课笔记】2-1 应用DOM方式解析XML—如何进行 XML 文件解析前的准备工作
- Android学习笔记42:XML文件解析(DOM方式)
- Java之xml文件解析一(DOM方式解析xml文件)
- java 解析dom 树方式来解析XML文件
- mybatis 解析配置文件(一)之XML的DOM解析方式
- python 解析xml 文件: DOM 方式
- DOM方式解析XML配置文件,将数据保存成数组
- android中解析XML文件方式—DOM SAX PULL
- android XML解析学习——Dom方式
- android dom 解析xml方式
- Java--Dom解析XML文件