dom解析xml
dom解析xml
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>追风筝的人</name> <author>卡勒德·胡赛尼 </author> <year>2005</year> <price>30</price> </book> <book id="2"> <name>基督山伯爵</name> <year>2007</year> <price>40</price> <language>English</language> </book> </bookstore>
测试代码
package com.xml.test; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; 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; public class XMLTest { public static void main(String[] args) { //创建DocumentBuilderFactory对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { //创建DocumentBuilder对象 DocumentBuilder db = dbf.newDocumentBuilder(); //通过DocumentBuilder对象的parse方法加载xml到当前项目下 Document document = db.parse("books.xml"); //获取book节点的集合 NodeList bookList = document.getElementsByTagName("book"); //nodelist长度 // System.out.println(bookList.getLength()); //遍历每一个book节点 for(int i = 0 ; i < bookList.getLength(); i++){ // //不知道属性名解析节点属性 // //通过item方法获取节点,nodelist的索引值从0开始。 // Node node = bookList.item(i); // //获取book节点的所有属性集合 // NamedNodeMap nodeMap = node.getAttributes(); // //遍历book的属性 // for(int j = 0 ;j < nodeMap.getLength(); j++){ // nodeMap.item(j).getNodeName(); // nodeMap.item(j).getNodeValue(); // } // //知道属性名解析节点属性 // //强制类型装换,转成element // Element element = (Element)bookList.item(i); // //获取属性值 // System.out.println(element.getAttribute("id")); //解析子节点 Node node = bookList.item(i); NodeList childNode = node.getChildNodes(); //遍历子节点 for(int k = 0;k < childNode.getLength();k++){ //过滤#text类型的节点 if(childNode.item(k).getNodeType() == Node.ELEMENT_NODE){ System.out.println(childNode.item(k).getNodeName()); //把value看成了标签的子节点,获取节点值 System.out.println(childNode.item(k).getFirstChild().getNodeValue()); // //获取节点值,获取节点下的所有text值。 注意和上面的不同 // System.out.println(childNode.item(k).getTextContent()); } } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }