zoukankan      html  css  js  c++  java
  • 对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")));
                  }
        
    }
  • 相关阅读:
    bzoj 1053: [HAOI2007]反素数ant 搜索
    bzoj 1040: [ZJOI2008]骑士 環套樹DP
    对主席树的一些理解
    POJ 2777 Count Color【线段树】
    POJ 2420 A Star not a Tree?【爬山法】
    生物遗传学 整理人PYJ (恋_紫花地丁)
    POJ3321Apple Tree【dfs 树状数组】
    POJ1450:Gridland 【杂题】
    POJ 1088 滑雪【记忆化搜索】
    Poj3253:Fence Repair 【贪心 堆】
  • 原文地址:https://www.cnblogs.com/jjlovemm/p/4261284.html
Copyright © 2011-2022 走看看