java解析XML文件(DOM方式)

使用DOM的方式解析XML文件
关于XML的注意点
XML文件的父节点的属性要有一个id
如若是父节点中的子节点还有子节点,也注意添加当前被当作父节点的子节点的id属性。
主要方法

    DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();  //创建实例
        DocumentBuilder  db = dbf.newDocumentBuilder();
        Document document = db.parse("xml文件的路径");
        NodeList nodeList = document.getElementsByTagName("xml的节点名称");
            Node node = nodeList.item(i); //通过 item的形式获取当前第几个节点,i通过for循环 nodeList得出。
            ----------------------------------------------
            NamedNodeMap attrs = node.getAttributes();//获取当前节点下的子节点
            for(int j = 0;j<attrs.getLength();j++){ //这里面的属性只包括了nodeList节点的属性,不包括其所包含的子节点的属性
                Node attr= attrs.item(j);
                System.out.println("属性名:"+attr.getNodeName()+" 属性值:"+attr.getNodeValue());
            }
            ---------------------------------
            NodeList  childNodes = node.getChildNodes(); //这里是获取当前节点的子节点
            for(int k=0;k<childNodes.getLength();k++){
                //判断子节点中的节点类型,如果不判断会有默认的 #text的节点出来,则判断是否等于 element的节点
                 if(childNodes.item(k).getNodeType() == Node.ELEMENT_NODE){
                     //获取了element类型节点的节点名
                     Node child = childNodes.item(k);

                     if(child.hasAttributes()){ //这里我判断改节点是否还有子节点
                         NodeList childNodeList = document.getElementsByTagName("paper");
                            NamedNodeMap nodeAttrs = childNodeList.item(0).getAttributes();//是 nodeList节点,
                            for(int j = 0;j<attrs.getLength();j++){ 
                                Node nodeAttr= attrs.item(j);
                                System.out.println("nodeAttr属性名:"+nodeAttr.getNodeName()+" nodeAttr属性值:"+nodeAttr.getNodeValue());
                            }
                            NodeList  childNodelist = child.getChildNodes(); //这里是获取当前节点的子节点
                            for(int l=0;l<childNodelist.getLength();l++){
                                 if(childNodelist.item(l).getNodeType() == Node.ELEMENT_NODE){
                                     System.out.println("childNodelist子节点属性名:" + childNodelist.item(l).getNodeName());
                                     System.out.println("childNodelist子节点属性值:" + childNodelist.item(l).getTextContent()); //获取子节点的值,是用getTextContent
                                 }

                            }
                     }else{
                         System.out.print("子节点属性名:" + childNodes.item(k).getNodeName());
                         System.out.println("子节点属性值:" + childNodes.item(k).getTextContent());
                     }
                 }

            }
        }

以上的解析,个人想法跟js获取html元素的思路会差不多。
html代码:

<!DOCTYPE html>
<html>
    <head></head>
    <body>
         <div id="first">
             <p></p>
             <p></p>
             <p></p>
             <p></p>
             <ul>
                <li></li>
             </ul>
         </div>
         <div  id="sec">
             <p></p>
             <p></p>
             <p></p>
             <p></p>
         </div>
         <div  id="thr">
             <p></p>
             <p></p>
             <p></p>
             <p></p>
         </div>
         <div id="four">
             <p></p>
             <p></p>
             <p></p>
             <p></p>
         </div>
    </body>
</html>
var divList = document.getElementsByTagName("div");
for(int i=0;i<divList.length;i++){
    var Obj = divList[i]; //这里获取了每个div的节点
    if(Obj.hasChildNodes()){//判断节点有无子节点
        var childList = Obj.getElementsByTagName("*");//*是获取全部类型节点
        //接下来再一致进行对子节点的获取.....
        for(int j=0;j<childList.length;j++){
            if(childList[j].hasChildNodes()){//判断节点有无子节点
            //进行获取操作
            }else{
                //进行获取操作
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值