XML 文件的操作(三)

Xml代码 复制代码
  1. <?xml version="1.0" encoding="gb2312"?>  
  2.   
  3. <?xml-stylesheet type="text/xsl" href="students.xsl"?>  
  4.   
  5. <students>  
  6.     <student sn="01">  
  7.         <name>张三</name>  
  8.         <age>18</age>  
  9.     </student>  
  10.        
  11.     <student sn="02">  
  12.         <name>李四</name>  
  13.         <age>20</age>  
  14.     </student>  
  15. </students>  


java程序:
Java代码 复制代码
  1. package com.ibm.xml;   
  2.   
  3. import java.io.File;   
  4. import java.io.IOException;   
  5.   
  6. import javax.xml.parsers.DocumentBuilder;   
  7. import javax.xml.parsers.DocumentBuilderFactory;   
  8. import javax.xml.parsers.ParserConfigurationException;   
  9. import javax.xml.transform.Transformer;   
  10. import javax.xml.transform.TransformerConfigurationException;   
  11. import javax.xml.transform.TransformerException;   
  12. import javax.xml.transform.TransformerFactory;   
  13. import javax.xml.transform.dom.DOMSource;   
  14. import javax.xml.transform.stream.StreamResult;   
  15.   
  16. import org.w3c.dom.Document;   
  17. import org.w3c.dom.Element;   
  18. import org.w3c.dom.Node;   
  19. import org.w3c.dom.NodeList;   
  20. import org.w3c.dom.Text;   
  21. import org.xml.sax.SAXException;   
  22.   
  23. /**  
  24.  * 对xml节点的添加、删除、修改  
  25.  * @author Administrator  
  26.  *  
  27.  */  
  28. public class DOMConvert {   
  29.   
  30.     /**  
  31.      * @param args  
  32.      */  
  33.     public static void main(String[] args) {   
  34.         DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();   
  35.         try  
  36.         {   
  37.             DocumentBuilder db=dbf.newDocumentBuilder();   
  38.             Document doc=db.parse(new File("students.xml"));   
  39.             //添加新的元素   
  40.             //创建元素节点   
  41.             //创建根节点   
  42.             Element eltStu=doc.createElement("student");   
  43.             //创建子节点   
  44.             Element eltName=doc.createElement("name");   
  45.             Element eltAge=doc.createElement("age");   
  46.             //创建文本节点   
  47.             Text txtName=doc.createTextNode("王五");   
  48.             Text txtAge=doc.createTextNode("19");   
  49.             //元素节点添加文本节点内容   
  50.             eltName.appendChild(txtName);   
  51.             eltAge.appendChild(txtAge);   
  52.             //根节点添加子节点   
  53.             eltStu.appendChild(eltName);   
  54.             eltStu.appendChild(eltAge);   
  55.             //添加的属性   
  56.             eltStu.setAttribute("sn","03");   
  57.             //获取子节点   
  58.             Element root=doc.getDocumentElement();   
  59.             root.appendChild(eltStu);   
  60.             //删除节点(第一个节点)   
  61.             NodeList nl=root.getElementsByTagName("student");   
  62.             root.removeChild(nl.item(0));   
  63.             //修改节点(第一个节点,改成22)   
  64.             Element eltStuChg=(Element)nl.item(0);   
  65.             Node nodeAgeChg=eltStuChg.getElementsByTagName("age").item(0);   
  66.             nodeAgeChg.getFirstChild().setNodeValue("22");   
  67.                
  68.             int len=nl.getLength();   
  69.             for(int i=0;i<len;i++)   
  70.             {   
  71.                 Element elt=(Element)nl.item(i);   
  72.                 System.out.println("编号: "+elt.getAttribute("sn"));   
  73.                    
  74.                 Node nodeName=elt.getElementsByTagName("name").item(0);   
  75.                 Node nodeAge=elt.getElementsByTagName("age").item(0);   
  76.                    
  77.                 String name=nodeName.getFirstChild().getNodeValue();   
  78.                 String age=nodeAge.getFirstChild().getNodeValue();   
  79.                    
  80.                 System.out.println("姓名: "+name);   
  81.                 System.out.println("年龄: "+age);   
  82.                    
  83.                 System.out.println("-----------------------------");   
  84.             }   
  85.             //复制xml内容写到其他的文件中   
  86.             TransformerFactory tff=TransformerFactory.newInstance();   
  87.             Transformer tf = tff.newTransformer();   
  88.             tf.setOutputProperty("encoding","gb2312");   
  89.             DOMSource source=new DOMSource(doc);   
  90.             StreamResult result=new StreamResult(new File("converted.xml"));   
  91.             tf.transform(source,result);   
  92.         }catch (ParserConfigurationException e)   
  93.         {   
  94.             // TODO 自动生成 catch 块   
  95.             e.printStackTrace();   
  96.         }   
  97.         catch (SAXException e)   
  98.         {   
  99.             // TODO 自动生成 catch 块   
  100.             e.printStackTrace();   
  101.         }   
  102.         catch (IOException e)   
  103.         {   
  104.             // TODO 自动生成 catch 块   
  105.             e.printStackTrace();   
  106.         } catch (TransformerConfigurationException e) {   
  107.         // TODO Auto-generated catch block   
  108.         e.printStackTrace();   
  109.         } catch (TransformerException e) {   
  110.             // TODO Auto-generated catch block   
  111.             e.printStackTrace();   
  112.         }   
  113.     }   
  114.   
  115. }  
posted @ 2009-01-08 16:29  猪鼻驴耳  阅读(134)  评论(0)    收藏  举报