使用DOM解析XML节点
2014-12-14 14:26
435 查看
一、book.xml
二、测试类
三、输出结果:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰与火之歌</name> <author>乔治马丁</author> <year>2014</year> <price>89</price> </book> <book id="2"> <name>安徒生童话</name> <year>2004</year> <price>77</price> <language>English</language> </book> </bookstore>
二、测试类
package com.imooc.domtest.test; 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.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class DOMTest { public static void main(String[] args) { //创建一个DocumentBuilderFactory的对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //创建一个DocumentBuilder的对象 try { //创建DocumentBuilder对象 DocumentBuilder db = dbf.newDocumentBuilder(); //通过DocumentBuilder对象的parser方法加载books.xml文件到当前项目下 Document document = db.parse("book.xml"); //获取所有book节点的集合 NodeList bookList = document.getElementsByTagName("book"); //通过nodelist的getLength()方法可以获取bookList的长度 System.out.println("一共有" + bookList.getLength() + "本书"); //遍历每一个book节点 for (int i = 0; i < bookList.getLength(); i++) { System.out.println("=================下面开始遍历第" + (i + 1) + "本书的内容================="); //通过 item(i)方法 获取一个book节点,nodelist的索引值从0开始 Node book = bookList.item(i); // 获取book节点的所有属性集合 NamedNodeMap attrs = book.getAttributes(); System.out.println("第 " + (i + 1) + "本书共有" + attrs.getLength() + "个属性"); // 遍历book的属性 for (int j = 0; j < attrs.getLength(); j++) { //通过item(index)方法获取book节点的某一个属性 Node attr = attrs.item(j); //获取属性名 System.out.print("属性名:" + attr.getNodeName()); //获取属性值 System.out.println("--属性值" + attr.getNodeValue()); } // //前提:已经知道book节点有且只能有1个id属性 // //将book节点进行强制类型转换,转换成Element类型 // Element book = (Element) bookList.item(i); // //通过getAttribute("id")方法获取属性值 // String attrValue = book.getAttribute("id"); // System.out.println("id属性的属性值为" + attrValue); //解析book节点的子节点 NodeList childNodes = book.getChildNodes(); //遍历childNodes获取每个节点的节点名和节点值 System.out.println("第" + (i+1) + "本书共有" + childNodes.getLength() + "个子节点"); for (int k = 0; k < childNodes.getLength(); k++) { //区分出text类型的node以及element类型的node if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) { //获取了element类型节点的节点名 System.out.print("第" + (k + 1) + "个节点的节点名:" + childNodes.item(k).getNodeName()); // 获取了element类型节点的节点值 System.out.println("--节点值是:" + childNodes.item(k).getFirstChild().getNodeValue()); // System.out.println("--节点值是:" + childNodes.item(k).getTextContent()); } } System.out.println("======================结束遍历第" + (i + 1) + "本书的内容================="); } } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
三、输出结果:
一共有2本书 =================下面开始遍历第1本书的内容================= 第 1本书共有1个属性 属性名:id--属性值1 第1本书共有9个子节点 第2个节点的节点名:name--节点值是:冰与火之歌 第4个节点的节点名:author--节点值是:乔治马丁 第6个节点的节点名:year--节点值是:2014 第8个节点的节点名:price--节点值是:89 ======================结束遍历第1本书的内容================= =================下面开始遍历第2本书的内容================= 第 2本书共有1个属性 属性名:id--属性值2 第2本书共有9个子节点 第2个节点的节点名:name--节点值是:安徒生童话 第4个节点的节点名:year--节点值是:2004 第6个节点的节点名:price--节点值是:77 第8个节点的节点名:language--节点值是:English ======================结束遍历第2本书的内容=================
相关文章推荐
- 使用DOM解析XML的文件属性名和属性值、节点名和节点值
- 【慕课笔记】2-3 应用DOM方式解析XML—使用 DOM 解析XML 文件的节点名和节点值
- Java使用DOM解析XML的文件属性名和属性值、节点名和节点值
- 【已解决】Android中用DOM方式解析xml时使用getElementsByTagName去获得节点结果为空
- 使用Jsoup库解析HTML、XML或URL链接中的DOM节点
- 使用Jsoup库解析HTML、XML或URL链接中的DOM节点
- Andorid中使用Jsoup解析库解析XML、HTML、Dom节点---第三方库学习笔记(三)
- DOM解析XML遇到的子节点个数问题
- Php Xml解析之DOMDocument使用方法浅解
- java解析xml之一:使用SAX与DOM
- android中使用SAX, DOM, 或者pull 来解析XML文档
- Dom解析是将xml文件全部载入,组装成一颗dom树,然后通过节点以及节点之间的关系来解析xml文件,下面结合这个xml文件来进行dom解析。
- 使用Dom生成xml文件和解析xml文件
- Android使用DOM解析xml
- 使用DOM技术来对XML文档进行解析范例
- Java学习之路——使用DOM解析XML文档
- 《Android开发从零开始》——28.使用DOM和pull解析XML
- java解析xml之一:使用SAX与DOM
- js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
- Qt中使用DOM对XML进行的各种解析(总结) 转