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
          好東東。  回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 兴隆县| 同心县| 罗平县| 黑水县| 洛川县| 拜城县| 遂溪县| 清新县| 凉城县| 富裕县| 海丰县| 长岛县| 庆安县| 资阳市| 施甸县| 松桃| 措勤县| 潮安县| 普兰店市| 富民县| 奉贤区| 五指山市| 景东| 淳安县| 郓城县| 大石桥市| 炎陵县| 灌云县| 安福县| 二手房| 清徐县| 大石桥市| 马鞍山市| 寿光市| 乌拉特中旗| 峨边| 通道| 永福县| 江山市| 西贡区| 阳东县|