激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

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

java使用DOM對(duì)XML文檔進(jìn)行增刪改查操作實(shí)例代碼

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

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

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

源代碼:

?
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)建文件工廠實(shí)例
     */
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    // 如果創(chuàng)建的解析器在解析XML文檔時(shí)必須刪除元素內(nèi)容中的空格,則為true,否則為false
    dbf.setIgnoringElementContentWhitespace(true);
 
    try {
      /*
       * 創(chuàng)建文件對(duì)象
       */
      DocumentBuilder db = dbf.newDocumentBuilder();// 創(chuàng)建解析器,解析XML文檔
      Document doc = db.parse(xmlPath); // 使用dom解析xml文件
 
      /*
       * 歷遍列表,進(jìn)行XML文件的數(shù)據(jù)提取
       */
      // 根據(jù)節(jié)點(diǎn)名稱來(lái)獲取所有相關(guān)的節(jié)點(diǎn)
      NodeList sonlist = doc.getElementsByTagName("son");
      for (int i = 0; i < sonlist.getLength(); i++) // 循環(huán)處理對(duì)象
      {
        // 節(jié)點(diǎn)屬性的處理
        Element son = (Element) sonlist.item(i);
        // 循環(huán)節(jié)點(diǎn)son內(nèi)的所有子節(jié)點(diǎn)
        for (Node node = son.getFirstChild(); node != null; node = node
            .getNextSibling()) {
          // 判斷是否為元素節(jié)點(diǎn)
          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)建文件工廠實(shí)例
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setIgnoringElementContentWhitespace(true);
    try {
      // 從XML文檔中獲取DOM文檔實(shí)例
      DocumentBuilder db = dbf.newDocumentBuilder();
      // 獲取Document對(duì)象
      Document xmldoc = db.parse(xmlPath);
 
      // 獲取根節(jié)點(diǎn)
      Element root = xmldoc.getDocumentElement();
      // 定位id為001的節(jié)點(diǎn)
      Element per = (Element) selectSingleNode("/father/son[@id='001']",
          root);
      // 將age節(jié)點(diǎn)的內(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());
    }
  }
 
  // 獲取目標(biāo)節(jié)點(diǎn),進(jìn)行刪除,最后保存
  public static void discardSon() {
 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setIgnoringElementContentWhitespace(true);
 
    try {
 
      DocumentBuilder db = dbf.newDocumentBuilder();
      Document xmldoc = db.parse(xmlPath);
      // 獲取根節(jié)點(diǎn)
      Element root = xmldoc.getDocumentElement();
      // 定位根節(jié)點(diǎn)中的id=002的節(jié)點(diǎn)
      Element son = (Element) selectSingleNode("/father/son[@id='002']",
          root);
      // 刪除該節(jié)點(diǎn)
      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é)點(diǎn)
  public static void createSon() {
    // 創(chuàng)建文件工廠實(shí)例
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setIgnoringElementContentWhitespace(false);
 
    try {
 
      DocumentBuilder db = dbf.newDocumentBuilder();
      // 創(chuàng)建Document對(duì)象
      Document xmldoc = db.parse(xmlPath);
      // 獲取根節(jié)點(diǎn)
      Element root = xmldoc.getDocumentElement();
      // 創(chuàng)建節(jié)點(diǎn)son,設(shè)置對(duì)應(yīng)的id為004
      Element son = xmldoc.createElement("son");
      son.setAttribute("id", "004");
      // 創(chuàng)建節(jié)點(diǎn)name
      Element name = xmldoc.createElement("name");
      name.setTextContent("小兒子");
      son.appendChild(name);
      // 創(chuàng)建節(jié)點(diǎn)age
      Element age = xmldoc.createElement("age");
      age.setTextContent("0");
      son.appendChild(age);
      // 把son添加到根節(jié)點(diǎn)中
      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é)點(diǎn)信息
  public static Node selectSingleNode(String express, Element source) {
    Node result = null;
    //創(chuàng)建XPath工廠
    XPathFactory xpathFactory = XPathFactory.newInstance();
    //創(chuàng)建XPath對(duì)象
    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對(duì)XML文檔進(jìn)行增刪改查操作實(shí)例代碼的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91在线播放国产 | 久久精品国产清自在天天线 | 国产大片免费看 | 国产成人在线观看免费网站 | 亚洲视频成人在线 | 毛片网站视频 | 成码无人av片在线观看网站 | 久久久一区二区三区视频 | 一区二区三区在线观看av | 久久久久久久久国产 | 国产精品久久久久久久久久妇女 | 成人精品久久久 | 内地av在线| 一级观看免费完整版视频 | 国产精品久久久久久影院8一贰佰 | 亚洲影视在线观看 | 青青操精品 | 国产精品午夜在线 | 日本看片一区二区三区高清 | 日韩字幕在线 | japanese hot milf free av| 国产亚洲精品综合一区 | 精品国产一区二区三区四区在线 | 国产精品99久久久久久久 | 成人av一区二区免费播放 | 性爱视频在线免费 | 天天操天天骑 | 日本高清无遮挡 | 国产精品久久久久久婷婷天堂 | 免费国产在线精品 | free性欧美hd另类 | 羞羞的动漫在线观看 | 久久久久久久久久亚洲精品 | 久久亚洲视频网 | 免费国产精品视频 | 国产精品久久久久久模特 | 国产成人自拍视频在线 | 91av在线免费 | 日本成人在线免费 | 成人国产免费观看 | 日日草夜夜|