一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - java使用DOM對XML文檔進行增刪改查操作實例代碼

java使用DOM對XML文檔進行增刪改查操作實例代碼

2021-03-29 10:42zc2274460 Java教程

這篇文章主要介紹了java使用DOM對XML文檔進行增刪改查操作實例代碼,實例涉及對xml文檔的增刪改查,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是java使用DOMXML文檔進行增刪改查操作的相關(guān)代碼,具體實例如下所示。

源代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
package com.zc.homeWork18;
 
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
 
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
public class XMLWriter {
 
  private static String xmlPath = "src\\com\\zc\\homeWork18\\MyXml.xml";
 
  public static void getFamilyMemebers() {
 
  /*
     * 創(chuàng)建文件工廠實例
     */
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    // 如果創(chuàng)建的解析器在解析XML文檔時必須刪除元素內(nèi)容中的空格,則為true,否則為false
    dbf.setIgnoringElementContentWhitespace(true);
 
    try {
      /*
       * 創(chuàng)建文件對象
       */
      DocumentBuilder db = dbf.newDocumentBuilder();// 創(chuàng)建解析器,解析XML文檔
      Document doc = db.parse(xmlPath); // 使用dom解析xml文件
 
      /*
       * 歷遍列表,進行XML文件的數(shù)據(jù)提取
       */
      // 根據(jù)節(jié)點名稱來獲取所有相關(guān)的節(jié)點
      NodeList sonlist = doc.getElementsByTagName("son");
      for (int i = 0; i < sonlist.getLength(); i++) // 循環(huán)處理對象
      {
        // 節(jié)點屬性的處理
        Element son = (Element) sonlist.item(i);
        // 循環(huán)節(jié)點son內(nèi)的所有子節(jié)點
        for (Node node = son.getFirstChild(); node != null; node = node
            .getNextSibling()) {
          // 判斷是否為元素節(jié)點
          if (node.getNodeType() == Node.ELEMENT_NODE) {
            String name = node.getNodeName();
            String value = node.getFirstChild().getNodeValue();
            System.out.println(name + " : " + value);
          }
        }
      }
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
 
  // 修改
  public static void modifySon() {
    // 創(chuàng)建文件工廠實例
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setIgnoringElementContentWhitespace(true);
    try {
      // 從XML文檔中獲取DOM文檔實例
      DocumentBuilder db = dbf.newDocumentBuilder();
      // 獲取Document對象
      Document xmldoc = db.parse(xmlPath);
 
      // 獲取根節(jié)點
      Element root = xmldoc.getDocumentElement();
      // 定位id為001的節(jié)點
      Element per = (Element) selectSingleNode("/father/son[@id='001']",
          root);
      // 將age節(jié)點的內(nèi)容更改為28
      per.getElementsByTagName("age").item(0).setTextContent("28");
      // 保存
      TransformerFactory factory = TransformerFactory.newInstance();
      Transformer former = factory.newTransformer();
      former.transform(new DOMSource(xmldoc), new StreamResult(new File(
          xmlPath)));
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
 
  // 獲取目標節(jié)點,進行刪除,最后保存
  public static void discardSon() {
 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setIgnoringElementContentWhitespace(true);
 
    try {
 
      DocumentBuilder db = dbf.newDocumentBuilder();
      Document xmldoc = db.parse(xmlPath);
      // 獲取根節(jié)點
      Element root = xmldoc.getDocumentElement();
      // 定位根節(jié)點中的id=002的節(jié)點
      Element son = (Element) selectSingleNode("/father/son[@id='002']",
          root);
      // 刪除該節(jié)點
      root.removeChild(son);
      // 保存
      TransformerFactory factory = TransformerFactory.newInstance();
      Transformer former = factory.newTransformer();
      former.transform(new DOMSource(xmldoc), new StreamResult(new File(
          xmlPath)));
 
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
 
  // 新增節(jié)點
  public static void createSon() {
    // 創(chuàng)建文件工廠實例
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setIgnoringElementContentWhitespace(false);
 
    try {
 
      DocumentBuilder db = dbf.newDocumentBuilder();
      // 創(chuàng)建Document對象
      Document xmldoc = db.parse(xmlPath);
      // 獲取根節(jié)點
      Element root = xmldoc.getDocumentElement();
      // 創(chuàng)建節(jié)點son,設(shè)置對應(yīng)的id為004
      Element son = xmldoc.createElement("son");
      son.setAttribute("id", "004");
      // 創(chuàng)建節(jié)點name
      Element name = xmldoc.createElement("name");
      name.setTextContent("小兒子");
      son.appendChild(name);
      // 創(chuàng)建節(jié)點age
      Element age = xmldoc.createElement("age");
      age.setTextContent("0");
      son.appendChild(age);
      // 把son添加到根節(jié)點中
      root.appendChild(son);
      // 保存
      TransformerFactory factory = TransformerFactory.newInstance();
      Transformer former = factory.newTransformer();
      former.transform(new DOMSource(xmldoc), new StreamResult(new File(
          xmlPath)));
 
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
  }
 
  // 修改節(jié)點信息
  public static Node selectSingleNode(String express, Element source) {
    Node result = null;
    //創(chuàng)建XPath工廠
    XPathFactory xpathFactory = XPathFactory.newInstance();
    //創(chuàng)建XPath對象
    XPath xpath = xpathFactory.newXPath();
    try {
      result = (Node) xpath.evaluate(express, source, XPathConstants.NODE);
      System.out.println(result);
    } catch (XPathExpressionException e) {
      System.out.println(e.getMessage());
    }
 
    return result;
  }
 
  // 打印
  public static void main(String[] args) {
 
    getFamilyMemebers();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    modifySon();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    System.out.println("修改數(shù)據(jù)");
    getFamilyMemebers();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    discardSon();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    System.out.println("刪除數(shù)據(jù)");
    getFamilyMemebers();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    createSon();
    System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
    System.out.println("添加數(shù)據(jù)");
    getFamilyMemebers();
  }
}

XML文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<father>
  <son id="001">
    <name>老大</name>
    <age>20</age>
  </son>
  <son id="002">
    <name>老二</name>
    <age>18</age>
  </son>
  <son id="003">
    <name>老三</name>
    <age>13</age>
  </son>
 
</father>

總結(jié)

以上就是本文關(guān)于java使用DOM對XML文檔進行增刪改查操作實例代碼的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/zc2274460/article/details/51182536

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色花堂中文字幕98堂网址 | 极品 女神校花 露脸91 | 精品久久洲久久久久护士免费 | 午夜伦理电影在线观免费 | blacked黑人 | 特黄a级三级三级野战 | 亚洲va久久久久综合 | 天堂va在线高清一区 | 欧美男同互吃gay老头 | 99视频在线观看视频 | 美女舒服好紧太爽了视频 | 国产一卡2卡3卡4卡公司科普 | 国产成人福利色视频 | 夫妻性生活一级黄色片 | 91在线视频国产 | 国产rpg迷雾之风冷狐破解 | 亚洲国产欧美在线人成aaa | 久久九九精品国产自在现线拍 | 天天射夜夜爽 | 成人夜视频寂寞在线观看 | 日韩成人在线网站 | 欧美一级特黄特色大片免费 | 午夜神器老司机高清无码 | 18hdxxxx日本护士 | 丝瓜视频成人在线观看 | 免费永久观看美女视频网站网址 | 亚洲精品一区在线观看 | 母乳在线播放 | 四虎国产一区 | 无码精品一区二区三区免费视频 | 猫咪色网 | 小柔的性放荡羞辱日记动漫 | 日本高清免费中文字幕不卡 | 国产一线天 | 校园全肉高h湿一女多男 | 1024国产看片在线观看 | 欧美美女一区二区三区 | 亚洲欧美日韩国产一区二区精品 | 免费看日韩 | 免费二级毛片免费完整视频 | 美女扒开腿让男人桶爽动态图片 |