XML(五):逐步分析DOM解析XML之修改和删除

一、修改

XML源文件如下:



    
        
        
        
    
    
        
        
        
    


        
    

视频中的示例

要求:在每个Brand标签中再加一个id属性。
具体实现思路如下:先拿出每一个Brand节点,然后通过setAttribute()方法设置一个新的属性。具体代码如下:

 // 修改元素
    public void updateEle() {
        // 获取所有的Brand
        NodeList brands = document.getElementsByTagName("Brand");
        for (int i = 0; i < brands.getLength(); i++) {
            Node brand = brands.item(i);
            Element brandEle = (Element)brand;
            brandEle.setAttribute("id", i + "");
            saveXML();
        }
    }

修改后的XML文件如下:



    
        
        
        
    
    
        
        
        
    


        
    

书中的实例

要求:将XML文档中的手机品牌信息“iphone”修改为“苹果”。
实现思路:
1、为XML文档构造DOM树。
2、找到符合修改条件的节点。
3、设置该节点的属性为修改值。
4、保存XML文档。
具体代码如下:

// 修改元素:将“iphone”修改为“苹果”
    public void change() {
        NodeList brands = document.getElementsByTagName("Brand");
        for (int i = 0; i < brands.getLength(); i++) {
            Node brand = brands.item(i);
            Element brandEle = (Element)brand;
            String brandName = brandEle.getAttribute("name");
            if (brandName.equals("iphone")) {
                brandEle.setAttribute("name", "苹果");
            }
        }
        saveXML();
    }

运行后的XML文件为:



    
        
        
        
    
    
        
        
        
    


        
    

二、删除

删除前的XML源文件:



    
        
        
        
    
    
        
        
        
    


        
    

视频示例

要求:删除手机品牌为华为的那个节点。
思路;把所有的Brand节点拿出来,找到name属性为“华为”的节点,得到这个节点的父节点,通过其父节点删掉这个节点。
具体代码如下:

// 删除华为手机
    public void deleteEle() {
        NodeList brands = document.getElementsByTagName("Brand");
        for (int i = 0; i < brands.getLength(); i++) {
            Node brand = brands.item(i);
            Element brandEle = (Element)brand;
            String brandName = brandEle.getAttribute("name");
            if (brandName.equals("华为")) {
                brandEle.getParentNode().removeChild(brandEle);
            }
        }
        saveXML();
    }

主要是删除的方法:brandEle.getParentNode().removeChild(brandEle);,先拿到当前节点的父节点,通过父节点去删除这个节点。这个节点自己本身是没有权利来删除自己的。
运行之后的XML文件:



    
    
        
        
        
    


        
    

到此为止,DOM增删改查已全部学习完毕。

你可能感兴趣的:(XML(五):逐步分析DOM解析XML之修改和删除)