采用Dom实现Xml 文档的增加,删除,修改,查询

  

 
  
  1. <?xml version="1.0" encoding="GB2312" standalone="no"?> 
  2. <books> 
  3. <book id="1"> 
  4. <name>数据结构</name> 
  5. <author>严蔚敏</author> 
  6. </book> 
  7. </books> 

实现代码:

  

 
  
  1. import java.io.File;  
  2.  
  3. import javax.xml.parsers.DocumentBuilder;  
  4. import javax.xml.parsers.DocumentBuilderFactory;  
  5. import javax.xml.transform.OutputKeys;  
  6. import javax.xml.transform.Transformer;  
  7. import javax.xml.transform.TransformerFactory;  
  8. import javax.xml.transform.dom.DOMSource;  
  9. import javax.xml.transform.stream.StreamResult;  
  10.  
  11. import org.w3c.dom.Document;  
  12. import org.w3c.dom.Element;  
  13.  
  14. import org.w3c.dom.NodeList;  
  15.  
  16. public class DomTest {  
  17.     public static void main(String[] args) throws Exception {  
  18.         init();  
  19.         add();  
  20.         traverse();  
  21.         edit(1);  
  22.         del(2);  
  23.     }  
  24.  
  25.     private static void del(int id) throws Exception {  
  26.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
  27.         DocumentBuilder builder = factory.newDocumentBuilder();  
  28.         Document document = builder.parse(new File("books.xml"));  
  29.  
  30.         Element root = document.getDocumentElement();  
  31.         NodeList list = root.getChildNodes();  
  32.  
  33.         for (int i = 0; i < list.getLength(); i++) {  
  34.             Element e = (Element) list.item(i);  
  35.             if (Integer.parseInt(e.getAttribute("id")) == id) {  
  36.  
  37.                 root.removeChild(e);  
  38.  
  39.                 break;  
  40.             }  
  41.  
  42.         }  
  43.         TransformerFactory tsf = TransformerFactory.newInstance();  
  44.  
  45.         Transformer tf = tsf.newTransformer();  
  46.  
  47.         tf.setOutputProperty(OutputKeys.ENCODING, "GB2312");  
  48.         tf.setOutputProperty(OutputKeys.INDENT, "  ");  
  49.  
  50.         StreamResult result = new StreamResult(new File("books.xml"));  
  51.         DOMSource source = new DOMSource(document);  
  52.         tf.transform(source, result);  
  53.     }  
  54.  
  55.     private static void edit(int id) throws Exception {  
  56.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
  57.         DocumentBuilder builder = factory.newDocumentBuilder();  
  58.         Document document = builder.parse(new File("books.xml"));  
  59.  
  60.         Element root = document.getDocumentElement();  
  61.         NodeList list = root.getChildNodes();  
  62.  
  63.         for (int i = 0; i < list.getLength(); i++) {  
  64.             Element e = (Element) list.item(i);  
  65.             if (Integer.parseInt(e.getAttribute("id")) == id) {  
  66.                 e.getElementsByTagName("name").item(0).setTextContent("数据结构");  
  67.                 e.getElementsByTagName("author").item(0).setTextContent("严蔚敏");  
  68.                 break;  
  69.             }  
  70.  
  71.         }  
  72.         TransformerFactory tsf = TransformerFactory.newInstance();  
  73.  
  74.         Transformer tf = tsf.newTransformer();  
  75.  
  76.         tf.setOutputProperty(OutputKeys.ENCODING, "GB2312");  
  77.         tf.setOutputProperty(OutputKeys.INDENT, "  ");  
  78.  
  79.         StreamResult result = new StreamResult(new File("books.xml"));  
  80.         DOMSource source = new DOMSource(document);  
  81.         tf.transform(source, result);  
  82.  
  83.     }  
  84.  
  85.     private static void traverse() throws Exception {  
  86.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
  87.         DocumentBuilder builder = factory.newDocumentBuilder();  
  88.         Document document = builder.parse(new File("books.xml"));  
  89.  
  90.         Element root = document.getDocumentElement();  
  91.         NodeList list = root.getChildNodes();  
  92.  
  93.         for (int i = 0; i < list.getLength(); i++) {  
  94.             Element e = (Element) list.item(i);  
  95.             System.out.println("id: " + e.getAttribute("id"));  
  96.             System.out.println("书籍名称:" 
  97.                     + e.getElementsByTagName("name").item(0).getTextContent());  
  98.             System.out  
  99.                     .println("书籍作者 :" 
  100.                             + e.getElementsByTagName("author").item(0)  
  101.                                     .getTextContent());  
  102.         }  
  103.  
  104.     }  
  105.  
  106.     private static void add() throws Exception {  
  107.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
  108.         DocumentBuilder builder = factory.newDocumentBuilder();  
  109.         Document document = builder.parse(new File("books.xml"));  
  110.  
  111.         Element root = document.getDocumentElement();  
  112.  
  113.         Element parent = document.createElement("book");  
  114.         Element name = document.createElement("name");  
  115.         Element author = document.createElement("author");  
  116.  
  117.         parent.setAttribute("id""2");  
  118.         name.appendChild(document.createTextNode("操作系统"));  
  119.         author.setTextContent("汤子赢");  
  120.  
  121.         parent.appendChild(name);  
  122.         parent.appendChild(author);  
  123.         root.appendChild(parent);  
  124.           
  125.           
  126.           
  127.  
  128.         TransformerFactory tsf = TransformerFactory.newInstance();  
  129.         DOMSource source = new DOMSource(document);  
  130.  
  131.         Transformer tf = tsf.newTransformer();  
  132.         tf.setOutputProperty(OutputKeys.ENCODING, "GB2312");  
  133.         tf.setOutputProperty(OutputKeys.INDENT, "  ");  
  134.  
  135.         StreamResult result = new StreamResult(new File("books.xml"));  
  136.  
  137.         tf.transform(source, result);  
  138.     }  
  139.  
  140.     private static void init() throws Exception {  
  141.         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
  142.         DocumentBuilder builder = factory.newDocumentBuilder();  
  143.         Document document = builder.newDocument();  
  144.  
  145.         Element root = document.createElement("books");  
  146.         Element parent = document.createElement("book");  
  147.         Element name = document.createElement("name");  
  148.         Element author = document.createElement("author");  
  149.  
  150.         parent.setAttribute("id""1");  
  151.         name.appendChild(document.createTextNode("计算机网络"));  
  152.         author.setTextContent("谢希仁");  
  153.  
  154.         parent.appendChild(name);  
  155.         parent.appendChild(author);  
  156.         root.appendChild(parent);  
  157.         document.appendChild(root);  
  158.  
  159.         TransformerFactory tsf = TransformerFactory.newInstance();  
  160.         DOMSource source = new DOMSource(document);  
  161.  
  162.         Transformer tf = tsf.newTransformer();  
  163.         tf.setOutputProperty(OutputKeys.ENCODING, "GB2312");  
  164.         tf.setOutputProperty(OutputKeys.INDENT, "  ");  
  165.  
  166.         StreamResult result = new StreamResult(new File("books.xml"));  
  167.  
  168.         tf.transform(source, result);  
  169.     }  
  170. }  

 结果: