【慕课笔记】2-3 应用DOM方式解析XML—使用 DOM 解析XML 文件的节点名和节点值

来源:互联网 发布:星际迷航 知乎 种族 编辑:程序博客网 时间:2024/04/29 08:11

2-3 使用 DOM 解析XML 文件的节点名和节点值 




package com.imooc.xml;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 Test {public static void main(String[] args) {DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();try {DocumentBuilder db=dbf.newDocumentBuilder();Document document=db.parse("haha.xml");//获取所有book结点的结合NodeList nodelist=document.getElementsByTagName("book");System.out.println("共有"+nodelist.getLength()+"本书");for(int i=0;i<nodelist.getLength();i++){//通过item(i)方法 获取一个book结点 nodelist索引值从0开始 Node book=nodelist.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.println(attr.getNodeName());//获取属性值System.out.println(attr.getNodeValue());}//将book结点进行强制类型转换,转换成Element类型//Element book=(Element) nodelist.item(i);//String attrValue=book.getAttribute("id");//System.out.println("id的值为"+attrValue);//解析book结点的子节点NodeList childnodes=book.getChildNodes();//遍历childnodes获取每个结点名和结点值System.out.println("第"+(i+1)+"本书共有"+childnodes.getLength());//遍历childnodes获取每个结点for(int k=0;k<childnodes.getLength();k++){//区分出text类型的node以及element类型的nodeif(childnodes.item(k).getNodeType()==Node.ELEMENT_NODE){System.out.print("第"+(k+1)+"个结点的节点名:"+childnodes.item(k).getNodeName());//System.out.println("--节点值为:"+childnodes.item(k).getFirstChild().getNodeValue());System.out.println("--节点值为:"+childnodes.item(k).getTextContent());//所有值}}}}catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();}catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}catch (ParserConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}



0 0
原创粉丝点击