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
<code>package</code> <code>com.sun.xml;</code>
<code>import</code> <code>java.io.File;</code>
<code>import</code> <code>java.io.FileNotFoundException;</code>
<code>import</code> <code>java.io.FileOutputStream;</code>
<code>import</code> <code>java.io.IOException;</code>
<code>import</code> <code>java.io.OutputStreamWriter;</code>
<code>import</code> <code>java.io.UnsupportedEncodingException;</code>
<code>import</code> <code>javax.xml.parsers.DocumentBuilder;</code>
<code>import</code> <code>javax.xml.parsers.DocumentBuilderFactory;</code>
<code>import</code> <code>javax.xml.parsers.ParserConfigurationException;</code>
<code>import</code> <code>javax.xml.transform.OutputKeys;</code>
<code>import</code> <code>javax.xml.transform.Transformer;</code>
<code>import</code> <code>javax.xml.transform.TransformerException;</code>
<code>import</code> <code>javax.xml.transform.TransformerFactory;</code>
<code>import</code> <code>javax.xml.transform.dom.DOMSource;</code>
<code>import</code> <code>javax.xml.transform.stream.StreamResult;</code>
<code>import</code> <code>org.w3c.dom.Document;</code>
<code>import</code> <code>org.w3c.dom.Element;</code>
<code>import</code> <code>org.w3c.dom.Node;</code>
<code>import</code> <code>org.w3c.dom.NodeList;</code>
<code>import</code> <code>org.w3c.dom.Text;</code>
<code>import</code> <code>org.xml.sax.SAXException;</code>
<code>public</code> <code>class</code> <code>ReadXml {</code>
<code> </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) </code><code>throws</code> <code>ParserConfigurationException, TransformerException {</code>
<code> </code><code>Document document=read(</code><code>"C:\\Users\\Administrator\\Desktop\\bookstore1.xml"</code><code>);</code>
<code> </code><code>String path=</code><code>"C:\\Users\\Administrator\\Desktop\\bookstore1.xml"</code><code>;</code>
<code> </code><code>addNode(document, path, </code><code>"张三"</code><code>);</code>
<code> </code><code>}</code>
<code> </code><code>public</code> <code>static</code> <code>Document read(String path) </code><code>throws</code> <code>ParserConfigurationException, TransformerException{</code>
<code> </code><code>Document document=</code><code>null</code><code>;</code>
<code> </code><code>DocumentBuilderFactory bf=DocumentBuilderFactory.newInstance();</code>
<code> </code><code>DocumentBuilder builder=bf.newDocumentBuilder();</code>
<code> </code><code>File file=</code><code>new</code> <code>File(path);</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>document= builder.parse(file);</code>
<code> </code><code>//得到值为title的标签,返回的是集合</code>
<code> </code><code>NodeList nodeList=document.getElementsByTagName(</code><code>"title"</code><code>); </code>
<code> </code><code>for</code><code>(</code><code>int</code> <code>i=</code><code>0</code><code>;i<nodeList.getLength();i++){</code>
<code> </code><code>Node node=nodeList.item(i);</code>
<code> </code><code>String string=node.getTextContent();</code>
<code> </code><code>System.out.println(string);</code>
<code> </code><code>updateXmlNode(document, node, </code><code>"sssss"</code><code>, path);</code>
<code> </code><code>}</code>
<code> </code>
<code> </code><code>} </code><code>catch</code> <code>(SAXException | IOException e) {</code>
<code> </code><code>// TODO Auto-generated catch block</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>}</code>
<code> </code><code>return</code> <code>document;</code>
<code> </code><code>public</code> <code>static</code> <code>void</code> <code>updateXmlNode(Document document,Node node,String text,String path) </code><code>throws</code> <code>TransformerException, UnsupportedEncodingException, FileNotFoundException{</code>
<code> </code><code>node.setTextContent(text);</code>
<code> </code><code>writeToFile(document, path);</code>
<code> </code>
<code> </code><code>public</code> <code>static</code> <code>void</code> <code>addNode(Document document,String path,String text){</code>
<code> </code><code>Text text2=document.createTextNode(text);</code>
<code> </code><code>Text text3=document.createTextNode(text);</code>
<code> </code><code>Text text4=document.createTextNode(text);</code>
<code> </code>
<code> </code><code>Element element=document.createElement(</code><code>"book"</code><code>);</code>
<code> </code><code>Element element2=document.createElement(</code><code>"title"</code><code>);</code>
<code> </code><code>Element element3=document.createElement(</code><code>"author"</code><code>);</code>
<code> </code><code>Element element4=document.createElement(</code><code>"price"</code><code>);</code>
<code> </code><code>element2.appendChild(text2);</code>
<code> </code><code>element3.appendChild(text3);</code>
<code> </code><code>element4.appendChild(text4);</code>
<code> </code><code>element.appendChild(element2);</code>
<code> </code><code>element.appendChild(element3);</code>
<code> </code><code>element.appendChild(element4);</code>
<code> </code><code>NodeList nodeList= document.getElementsByTagName(</code><code>"bookstore"</code><code>); </code>
<code> </code><code>Node node=nodeList.item(</code><code>0</code><code>);</code>
<code> </code><code>node.appendChild(element);</code>
<code> </code><code>writeToFile(document, path);</code>
<code> </code><code>} </code><code>catch</code> <code>(UnsupportedEncodingException | FileNotFoundException</code>
<code> </code><code>| TransformerException e) {</code>
<code> </code><code>public</code> <code>static</code> <code>void</code> <code>writeToFile(Document document,String path) </code><code>throws</code> <code>TransformerException, UnsupportedEncodingException, FileNotFoundException{</code>
<code> </code><code>TransformerFactory transformerFactory=TransformerFactory.newInstance();</code>
<code> </code><code>Transformer transformer=transformerFactory.newTransformer();</code>
<code> </code><code>/*</code>
<code> </code><code>* 格式化输出xml文档,换行和缩进*/</code>
<code> </code><code>transformer.setOutputProperty(OutputKeys.INDENT, "yes"); </code>
<code> </code><code>transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");</code>
<code> </code><code>//transformer.transform(new DOMSource(document), new StreamResult(path));</code>
<code> </code><code>* 设置输出流的编码为UTF-8*/</code>
<code> </code><code>OutputStreamWriter oWriter=</code><code>new</code> <code>OutputStreamWriter(</code><code>new</code> <code>FileOutputStream(</code><code>new</code> <code>File(path)),</code><code>"UTF-8"</code><code>);</code>
<code> </code><code>document.setXmlStandalone(</code><code>true</code><code>);</code>
<code> </code><code>transformer.transform(</code><code>new</code> <code>DOMSource(document),</code><code>new</code> <code>StreamResult(oWriter));</code>
<code>}</code>
xml文件如下:
<code><?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"utf-8"</code><code>?></code>
<code> </code><code><bookstore></code>
<code> </code><code><!--记录书本的信息--></code>
<code> </code><code><book></code>
<code> </code><code><title>数据结构</title></code>
<code> </code><code><author>严蔚敏</author></code>
<code> </code><code><price></code><code>30.00</code><code></price></code>
<code> </code><code></book></code>
<code></bookstore></code>
本文转自 matengbing 51CTO博客,原文链接:http://blog.51cto.com/matengbing/1876353