dom对xml的操作


import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.*;  
import java.io.*;
import org.w3c.dom.*;

public class control implements java.io.Serializable {
   
private static String xmlStr="";
   
private static int index=3;
   
//private static final String PATH="file:///";
    
   
public control() {
   }


   
public String getString(){
        
return xmlStr;
   }


   
public static Document getDocument(String filename) throws Exception {
       xmlStr
="";
       DocumentBuilderFactory dbf 
= DocumentBuilderFactory.newInstance();
        
// 设定解析的叁数
        dbf.setIgnoringComments(true);
        dbf.setIgnoringElementContentWhitespace(
true);
        DocumentBuilder db 
= dbf.newDocumentBuilder();
        
//导入XML文件
        Document doc = db.parse(filename);
        
return doc;
   }

    
   
public int addElement(Node node,String name,String sex,String age, String tel){

             
             Element oRoot
=((Document)node).getDocumentElement();
                         
             Element ename 
=((Document)node).createElement("name");  
             Text tname 
=((Document)node).createTextNode(name); 
             ename.appendChild(tname); 

             Element esex 
= ((Document)node).createElement("sex");  
             Text tsex 
= ((Document)node).createTextNode(sex); 
             esex.appendChild(tsex); 
          
             Element eage 
= ((Document)node).createElement("age");  
             Text tage 
= ((Document)node).createTextNode(age); 
             eage.appendChild(tage); 
            
             Element etel 
= ((Document)node).createElement("tel");  
             Text ttel  
= ((Document)node).createTextNode(tel); 
             etel.appendChild(ttel);
     
             Element stu  
=((Document)node).createElement("student"); 
             stu.setAttribute(
"id",Integer.toString(index));
             index
++;
             stu.appendChild(ename);
                      stu.appendChild(esex);
                      stu.appendChild(eage);
                      stu.appendChild(etel);
            
             oRoot.appendChild(stu); 
             save((Document)node);
             
if(stu==nullreturn 0;
             
return 1;
   }

     
   
public void traverseTree(Node node) throws Exception {
         
if(node == null{
            
return;
         }

         
int type = node.getNodeType();

         
switch (type) {

            
// handle document nodes
            case Node.DOCUMENT_NODE: {
               xmlStr
+="<tr>";
               traverseTree(((Document)node).getDocumentElement());
               
break;
            }


            
// handle element nodes
            case Node.ELEMENT_NODE: {
               String elementName 
= node.getNodeName();
               
if(elementName.equals("student")) {
                 xmlStr
+="</tr><tr>";
               }

               NodeList childNodes 
=node.getChildNodes();
               
if(childNodes != null{
                  
int length = childNodes.getLength();
                  
for (int loopIndex = 0; loopIndex <length ; loopIndex++)
                  
{
                     traverseTree(childNodes.item(loopIndex));
                  }

               }

               
break;
            }

            
            
// handle text nodes
            case Node.TEXT_NODE: {
               String data 
= node.getNodeValue().trim();
               
if((data.indexOf(" ")  <0&& (data.length()> 0)) {
                 xmlStr
+="<td>"+data+"</td>";
               }

            }

         }

    }

        
//增加的保存操作
        private void save(Document doc){
            
try{
                TransformerFactory tFactory 
=TransformerFactory.newInstance();
                Transformer transformer 
= tFactory.newTransformer();
                DOMSource source 
= new DOMSource(doc);
                StreamResult result 
= new StreamResult(new java.io.File("ok.xml"));
                transformer.transform(source, result); 
            }
catch(TransformerConfigurationException e)
        
{
            e.printStackTrace();
        }
catch(TransformerException e)
        
{
           e.printStackTrace();
        }


        }

        
  
public static void main(String []args){
            control ctrl 
= new control();
            
try{
            Document doc 
= ctrl.getDocument("ok.xml");
            String name 
= "haha";
            String sex 
= "female";
            String age 
= "22";
            String tel 
= "23256";
            
           
int i=ctrl.addElement(doc,name,sex,age,tel);
           Element oRoot
=(doc).getDocumentElement();
           ctrl.traverseTree(oRoot);
           String str 
= ctrl.getString();
           System.out.println(str);
           
       }
catch(Exception e){
        e.printStackTrace();
       }

        }

}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值