posts - 28,comments - 3,trackbacks - 0
          import   javax.xml.transform.dom.*;  
            import   javax.xml.parsers.*;  
            import   org.xml.sax.*;  
            import   org.xml.sax.helpers.*;  
            import   org.w3c.dom.*;  
            import   javax.xml.transform.*;  
            import   javax.xml.transform.stream.StreamResult     ;  
            import   javax.xml.transform.stream.StreamSource     ;  
            import   javax.xml.transform.dom.*;  
             
            import   java.util.*;  
            import   java.io.*;  
             
            public   class   DomReadDR{  
            DocumentBuilderFactory   factory;  
            DocumentBuilder   builder;  
            Document   doc;  
             
            public   DomReadDR()throws   Exception{  
            factory=DocumentBuilderFactory.newInstance();  
            builder   =   factory.newDocumentBuilder();  
            doc   =   builder.parse("test.xml");  
            }  
            public   void   Read()   throws   Exception{  
            doc.normalize();  
            NodeList   links=doc.getElementsByTagName("song");  
            for(int   i=0;i<links.getLength();i++){  
            Element   link   =   (Element)links.item(i);  
            System.out.println(link.getElementsByTagName("name").item(0).  
            getFirstChild().getNodeValue());  
            System.out.println(link.getElementsByTagName("music-by").item(0).  
            getFirstChild().getNodeValue());  
            }  
            }  
            //替換節點  
            public   int   replaceNode(String   nodeID,String   nodeValue){  
             
            doc.normalize();  
            NodeList   links=doc.getElementsByTagName("song");  
            //查找要替換的Node  
            boolean   blfindNode=false;  
            Element   link=null;  
            for(int   i=0;i<links.getLength();i++){  
            link   =   (Element)links.item(i);  
            if((link.getElementsByTagName("mId").item(0).getFirstChild().getNodeValue()).trim().equals(nodeID)){  
            blfindNode=true;  
            link.getElementsByTagName("music-by").item(0).getFirstChild().setNodeValue(nodeValue);//替換node的內容  
            break;  
            }  
            }  
            if   (!blfindNode)  
            {  
            return   1;//沒有找到合適的節點  
            }  
            try{  
            TransformerFactory   tFactory=TransformerFactory.newInstance();  
            Transformer   transformer=tFactory.newTransformer();  
            //設置輸出的encoding為改變gb2312  
            transformer.setOutputProperty("encoding","gb2312");    
            DOMSource   source=   new   DOMSource(doc);  
            StreamResult   result   =   new   StreamResult("test.xml");  
            transformer.transform(source,result);  
            }catch(javax.xml.transform.TransformerConfigurationException   e){  
            e.printStackTrace();  
            System.out.println(e.getMessage());  
            return   3;//寫文件錯誤  
            }catch(javax.xml.transform.TransformerException   ex){  
            ex.printStackTrace();  
            return   3;  
            }  
            return   0;//替換成功  
            }  
            //刪除節點  
            public   int   deleteNode(String   nodeID){  
             
            doc.normalize();  
            NodeList   links=doc.getElementsByTagName("song");  
            //查找要替換的Node  
            boolean   blfindNode=false;  
            Element   link=null;  
            for(int   i=0;i<links.getLength();i++){  
            link   =   (Element)links.item(i);  
            if((link.getElementsByTagName("mId").item(0).getFirstChild().getNodeValue()).trim().equals(nodeID)){  
            blfindNode=true;  
            try{  
            link.getParentNode().removeChild(link);  
            }catch(DOMException   e){  
            e.printStackTrace();  
            return   2;//Dom錯誤  
            }  
            break;  
            }  
            }  
             
            if   (!blfindNode)  
            {  
            return   1;//沒有找到合適的節點  
            }  
            try{  
            TransformerFactory   tFactory=TransformerFactory.newInstance();  
            Transformer   transformer=tFactory.newTransformer();  
            //設置輸出的encoding為改變gb2312  
             
            transformer.setOutputProperty("encoding","gb2312");    
            DOMSource   source=   new   DOMSource(doc);  
             
            StreamResult   result   =   new   StreamResult("test.xml");  
            transformer.transform(source,result);  
            }catch(javax.xml.transform.TransformerConfigurationException   e){  
            e.printStackTrace();  
            System.out.println(e.getMessage());  
            return   3;//寫文件錯誤  
            }catch(javax.xml.transform.TransformerException   ex){  
            ex.printStackTrace();  
            return   3;  
            }  
            return   0;//替換成功  
            }  
             
            //添加節點  
            public   void   addNode(String   mId,String   name,String   musicby){  
            Text   textseg;  
            Element   link   =   doc.createElement("song");  
             
            Element   emId   =   doc.createElement("mId");  
            textseg=doc.createTextNode(mId);  
            emId.appendChild(textseg);  
            link.appendChild(emId);  
             
            Element   ename   =   doc.createElement("name");  
            textseg=doc.createTextNode(name);  
            ename.appendChild(textseg);  
            link.appendChild(ename);  
             
             
            Element   emusicby   =   doc.createElement("music-by");  
            textseg   =   doc.createTextNode(musicby);  
            emusicby.appendChild(textseg);  
            link.appendChild(emusicby);  
             
            Element   root   =   doc.getDocumentElement();  
            root.normalize();  
            root.appendChild(link);  
             
            System.out.println(doc.getDoctype());  
            try{  
             
            TransformerFactory   tFactory=TransformerFactory.newInstance();  
            Transformer   transformer=tFactory.newTransformer();  
            //設置輸出的encoding為改變gb2312  
             
            transformer.setOutputProperty("encoding","gb2312");    
            DOMSource   source=   new   DOMSource(doc);  
            StreamResult   result   =   new   StreamResult("test.xml");  
            transformer.transform(source,result);  
            }catch(javax.xml.transform.TransformerConfigurationException   e){  
            e.printStackTrace();  
            System.out.println(e.getMessage());  
            }catch(javax.xml.transform.TransformerException   ex){  
            ex.printStackTrace();  
            }  
            }  
            public   static   void   main(String[]   args){  
            try{  
            DomReadDR   dr   =   new   DomReadDR();  
            dr.Read();  
            //dr.addNode("5","卡本特1","yestodayfdgdrtyrtyrtyrtyfgdfgdfgdfg   once   more");  
            System.out.println(dr.replaceNode("4","天上人間第死的克己復禮虧損大家法律虧損代理費"));  
            System.out.println(dr.deleteNode("1"));  
            }catch(Exception   e){  
            System.out.println(e.getMessage());  
            }  
            }  
             
            }  
          posted on 2007-05-25 09:21 李大嘴 閱讀(4120) 評論(1)  編輯  收藏

          FeedBack:
          # re: 操作xml(讀取、添加、刪除、修改節點)
          2009-12-28 12:11 | wpj
          好東東。  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 鹤峰县| 镇宁| 涞源县| 文成县| 吴旗县| 镶黄旗| 多伦县| 伊宁市| 千阳县| 永年县| 都江堰市| 犍为县| 姜堰市| 竹北市| 资中县| 苏尼特右旗| 辽阳市| 枝江市| 金秀| 红河县| 朔州市| 沂水县| 安多县| 海淀区| 辽宁省| 兴宁市| 澳门| 寻甸| 景德镇市| 东港市| 法库县| 金华市| 南城县| 定远县| 德安县| 丰镇市| 凤山市| 华池县| 鹰潭市| 琼中| 仪陇县|