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