首页 > 代码库 > DOM解析

DOM解析

 

dom解析

解析步骤 :

 

需要工厂类  DocumentBuilderFactory调用初始化

 

直接newDocumentBuilder  返回一个 DocumentBuilder对象

 

通过parse方法可以解析xml

 

可以传入相对路劲和绝对路径  

 

Parse返回的是Document 对象  注意 导包需要导入的是W3C

 

 

接着对xml进行操作

 

getElementByTagName方法   返回NodeList

 

调用item()获取属性

 

getAttribute获取所有属性  返回的是NameNodeMap 集合

最后就可以便利数据

 

getNodeName getNodeValue  属性名称和值

 

Element 元素  下有一个方法 getAttribute(“id”)

 

 public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
  DocumentBuilderFactory document= DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = null;
     builder = document.newDocumentBuilder();
   Document doc= builder.parse("x1.xml");
//   获取所有book节点集合
   NodeList nodelist= doc.getElementsByTagName("book");
   System.out.println("总共有:"+nodelist.getLength()+"本书");
   for (int i = 0; i < nodelist.getLength(); i++) {
    System.out.println("开始便利所有节点---------------");
    NamedNodeMap nodemap= nodelist.item(i).getAttributes();
    System.out.println("总共有:"+nodemap.getLength()+"属性");
   /* for (int j = 0; j < nodemap.getLength(); j++) {
     Node node= nodemap.item(j);
    
     System.out.println("属性名称:"+node.getNodeName()+",  属性值:"+node.getNodeValue());
    }*/
    /*Element element=(Element) nodemap.item(i);
    int str=element.getChildNodes().getLength();
    System.out.println("子节点的长度:"+str);*/
   Element element= (Element) nodelist.item(i);
   NodeList chiledNode= element.getChildNodes();
   
   int a=  element.getChildNodes().getLength();
   for (int j = 0; j < a; j++) {
    if (chiledNode.item(j).getNodeType() == Node.ELEMENT_NODE) {
     System.out.print("第" + (j + 1) + "个节点的节点名:" + chiledNode.item(j).getNodeName());
//     获取标签,值
     System.out.println(chiledNode.item(j).getTextContent());
//     获取值
     System.out.println(chiledNode.item(j).getFirstChild().getNodeValue());
    }
   }
    System.out.println(a+"结束所有节点---------------");
    System.out.println();
   }
 }

DOM解析