对xml进行增,删,改

 1 <?xml version="1.0" encoding="UTF-8" standalone="no"?><书架>
 2     <书>
 3         <书名 name="xxxx">何茂赟自传</书名>
 4         <作者>何茂赟</作者>
 5         
 6    <售价>500.00</售价></书>
 7     <书>
 8         <书名>何茂赟自传2</书名>
 9         <作者>何茂赟</作者>
10         <售价>100.00元</售价>
11     </书>
12 </书架>
package xml.demo;

import java.io.FileOutputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class demo {
    
    //向xml文档中添加节点:<售价>59.00</售价>
        @Test
    public void add() throws Exception
      {
        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//创建工厂
        DocumentBuilder builder=factory.newDocumentBuilder();//得到dom解析器
        Document document=builder.parse("src/xml/demo/shu.xml");//解析xml文档,得到代表文档的document
        
        Element price=document.createElement("售价");
        price.setTextContent("59.00");
        //把创建的节点挂到第一本书书上
        Element book=(Element) document.getElementsByTagName("书").item(0);
        book.appendChild(price);
        TransformerFactory tffactory=TransformerFactory.newInstance();
        Transformer tf=tffactory.newTransformer();
        tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/xml/demo/shu.xml")));
      }
        //向xml文档中指定节点位置添加节点:<售价>59.00</售价>
                @Test
            public void add1() throws Exception
              {
                DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//创建工厂
                DocumentBuilder builder=factory.newDocumentBuilder();//得到dom解析器
                Document document=builder.parse("src/xml/demo/shu.xml");//解析xml文档,得到代表文档的document
                
                Element price=document.createElement("售价");
                price.setTextContent("59.00");
                //得到参考节点
                Element refNode=(Element) document.getElementsByTagName("售价").item(0);
                
                //得到要添加内容的位置节点
                Element book=(Element) document.getElementsByTagName("书").item(0);
                //往book节点的指定位置插入添加的内容
                book.insertBefore(price, refNode);
                //把更改的内容更新到xml文档中去
                TransformerFactory tffactory=TransformerFactory.newInstance();
                Transformer tf=tffactory.newTransformer();
                tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/xml/demo/shu.xml")));
              }
                //向xml文档中插入属性: <书名>何茂赟自传</书名>上添加name="xxxx"
                @Test
            public void addarr() throws Exception
              {
                DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//创建工厂
                DocumentBuilder builder=factory.newDocumentBuilder();//得到dom解析器
                Document document=builder.parse("src/xml/demo/shu.xml");//解析xml文档,得到代表文档的document
                
                Element bookname=(Element) document.getElementsByTagName("书名").item(0);
                bookname.setAttribute("name", "xxxx");
                
                TransformerFactory tffactory=TransformerFactory.newInstance();
                Transformer tf=tffactory.newTransformer();
                tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/xml/demo/shu.xml")));
              }
                //向xml文档中删除节点:<售价>59.00</售价>
                @Test
            public void delet() throws Exception
              {
                DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//创建工厂
                DocumentBuilder builder=factory.newDocumentBuilder();//得到dom解析器
                Document document=builder.parse("src/xml/demo/shu.xml");//解析xml文档,得到代表文档的document
                
                //得到要删除的节点
                Element e=(Element) document.getElementsByTagName("售价").item(0);
                //得到要删除节点的爸爸
                Element book= (Element) document.getElementsByTagName("书").item(0);
                //删除要删除的节点
                book.removeChild(e);
                
                
                TransformerFactory tffactory=TransformerFactory.newInstance();
                Transformer tf=tffactory.newTransformer();
                tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/xml/demo/shu.xml")));
              }
                //向xml文档中删除节点:<售价>59.00</售价>
                @Test
            public void delet1() throws Exception
              {
                DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//创建工厂
                DocumentBuilder builder=factory.newDocumentBuilder();//得到dom解析器
                Document document=builder.parse("src/xml/demo/shu.xml");//解析xml文档,得到代表文档的document
                
                //得到要删除的节点
                Element e=(Element) document.getElementsByTagName("售价").item(0);
                e.getParentNode().removeChild(e);
                //e.getParentNode()..getParentNode().removeChild(e);//这句程序可以把要删除节点的父节点给删除
                
                TransformerFactory tffactory=TransformerFactory.newInstance();
                Transformer tf=tffactory.newTransformer();
                tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/xml/demo/shu.xml")));
              }
                //向xml文档中更改节点:<售价>59.00</售价>,把59改成100块
                @Test
            public void update() throws Exception
              {
                DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//创建工厂
                DocumentBuilder builder=factory.newDocumentBuilder();//得到dom解析器
                Document document=builder.parse("src/xml/demo/shu.xml");//解析xml文档,得到代表文档的document
                
                //得到要删除的节点
                Element e=(Element) document.getElementsByTagName("售价").item(0);
                e.setTextContent("500.00");
                
                TransformerFactory tffactory=TransformerFactory.newInstance();
                Transformer tf=tffactory.newTransformer();
                tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream("src/xml/demo/shu.xml")));
              }
    
}

 

posted on 2015-01-29 23:18  曾经的码农  阅读(142)  评论(0编辑  收藏  举报