DOM 添加 / 更新 / 删除 XML (CURD)

获得Document

/**
     * 获取文档
     * 1、获得实例工厂
     * 2、获得解析器
     * 3、获得document
     */

添加结点

/**
     * 1、获得根结点
     * 2、创建结点(设置属性)
     * 3、创建子节点()
     * 4、添加到根节点
     */

更新结点

    /**
     * 更新XML
     * 1、获得所有结点
     * 2、获得每一本书
     * 3、获得ID
     * 4、更新
     *     *1、更新id
     *     *2、更新子节点
     */

删除结点

/**
     * 删除XML
     * 1、获得所有结点
     * 2、获得每一本书
     * 3、获得ID
     * 4、删除
     */

保存XML

/**
     * 保存xml
     * 1、获得持久化对象实例工厂
     * 2、获得持久化对象
     * 3、将内存数据保存到磁盘
     *     *源————将document对象封装到Source
     *     *结果————将文件路径封装到Result
     * 4、保存
     */

  1 public static void main(String[] args) throws Exception {
  2         //获取document       
  3         Document document=getDocument();
  4         //更新xml
  5         //UpdateXml(document);
  6          
  7         //添加XML
  8          
  9         //AddXML(document);
 10          
 11          
 12         //删除xml
 13         //DeleXML(document);
 14          
 15          
 16          
 17         /**
 18          * 保存
 19          */
 20         Save(document);
 21          
 22     }
 23  
 24     /**
 25      * 1、获得根结点
 26      * 2、创建结点(设置属性)
 27      * 3、创建子节点()
 28      * 4、添加到根节点
 29      */
 30     private static void AddXML(Document document) {
 31         Element rootElement=document.getDocumentElement();
 32          
 33         Element newElement=document.createElement("book");
 34          
 35         newElement.setAttribute("id", "b003");
 36          
 37         Element PriceElement=document.createElement("title");
 38         PriceElement.setTextContent("30");
 39         PriceElement.setAttribute("unit", "¥");
 40         newElement.appendChild(PriceElement);
 41          
 42         rootElement.appendChild(newElement);
 43     }
 44      
 45     /**
 46      * 删除XML
 47      * 1、获得所有结点
 48      * 2、获得每一本书
 49      * 3、获得ID
 50      * 4、删除
 51      */
 52  
 53     private static void DeleXML(Document document) {
 54         NodeList nodeList=document.getElementsByTagName("book");
 55         for (int i = 0; i < nodeList.getLength(); i++) {
 56             Node chilNode=nodeList.item(i);
 57             String id=((Element)chilNode).getAttribute("id");
 58             if("b001".equals(id))
 59             {
 60                 Node parentNode=chilNode.getParentNode();
 61                 parentNode.removeChild(chilNode);
 62             }
 63         }
 64     }
 65  
 66     /**
 67      * 更新XML
 68      * 1、获得所有结点
 69      * 2、获得每一本书
 70      * 3、获得ID
 71      * 4、更新
 72      *  *1、更新id
 73      *  *2、更新子节点
 74      */
 75     private static void UpdateXml(Document document) {
 76         NodeList nodeList=document.getElementsByTagName("book");
 77         for (int i = 0; i < nodeList.getLength(); i++) {
 78             Node node=nodeList.item(i);
 79             Element element=(Element) node;
 80             String id=element.getAttribute("id");
 81             if("b001".equals(id))
 82             {
 83                 //element.setAttribute("id", "booooo"); //更新id值
 84                 NodeList childNode=element.getElementsByTagName("title");
 85                     Element childElement=(Element) childNode.item(0);//childNode.getLength()=1
 86                         childElement.setTextContent("Java核心技术");               
 87             }
 88         }
 89     }
 90  
 91     /**
 92      * 保存xml
 93      * 1、获得持久化对象实例工厂
 94      * 2、获得持久化对象
 95      * 3、将内存数据保存到磁盘
 96      *   *源————将document对象封装到Source
 97      *   *结果————将文件路径封装到Result
 98      * 4、保存
 99      */
100     private static void Save(Document document)
101             throws Exception {
102         TransformerFactory factory=TransformerFactory.newInstance();
103         Transformer transformer=factory.newTransformer();
104         Source xmlSource=new DOMSource(document);
105         javax.xml.transform.Result outputTarget=new StreamResult("books.jaxp.xml");
106          
107         transformer.transform(xmlSource, outputTarget);
108          
109         System.out.println("done");
110     }
111      
112     /**
113      * 获取文档
114      * 1、获得实例工厂
115      * 2、获得解析器
116      * 3、获得document
117      */
118  
119     private static Document getDocument() throws ParserConfigurationException,
120             SAXException, IOException {
121         DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
122         DocumentBuilder builder=factory.newDocumentBuilder();
123         Document document=builder.parse("books.xml");
124         return document;
125     }
原文地址:https://www.cnblogs.com/liuwt365/p/4079249.html