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
|
package com.sun.xml;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class ReadXmlBySaxReader {
public static void main(String[] args) throws IOException {
String path= "C:\\Users\\Administrator\\Desktop\\bookstore.xml" ;
Document document=getDocument(path);
getNode(document);
updateEle( "aaaa" , document,path);
addEle(document, "编程书籍" , path);
}
public static Document getDocument(String path) throws UnsupportedEncodingException, FileNotFoundException{
SAXReader saxReader= new SAXReader();
File file= new File(path);
Document document= null ;
InputStreamReader inputStreamReader= new InputStreamReader( new FileInputStream(file));
try {
document=saxReader.read(inputStreamReader);
return document;
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null ;
}
public static void getNode(Document document){
Element element=document.getRootElement();
@SuppressWarnings ( "unchecked" )
List<Element> list=element.elements( "book" );
Iterator<Element> iterator=list.iterator();
while (iterator.hasNext()){
Element node=iterator.next();
Element element2=node.element( "title" );
System.out.println(element2.getText());
}
System.out.println( "ss" );
}
public static void updateEle(String text,Document document,String path) throws IOException{
Element element=document.getRootElement();
@SuppressWarnings ( "unchecked" )
List<Element> list=element.elements( "book" );
Iterator<Element> iterator=list.iterator();
while (iterator.hasNext()){
Element node=iterator.next();
Element element2=node.element( "title" );
System.out.println( "title为: " +element2.getText());
if (element2.getText().equals( "ss" )){
element2.setText( "java书籍" );
}
}
writeXml(document,path);
}
public static void addEle(Document document,String text,String path) throws IOException{
Element rootElement=document.getRootElement();
Element element=rootElement.addElement( "book" );
Element element2=element.addElement( "title" );
Element element3=element.addElement( "author" );
Element element4=element.addElement( "price" );
element2.setText(text);
element3.setText( "万福" );
element4.setText( "39.0" );
writeXml(document, path);
}
public static void writeXml(Document document,String path) throws IOException{
OutputFormat outputFormat=OutputFormat.createPrettyPrint();
try {
XMLWriter xmlWriter=(XMLWriter) new XMLWriter( new FileOutputStream(path),outputFormat);
xmlWriter.write(document);
xmlWriter.close();
} catch (UnsupportedEncodingException | FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} |
本文转自 matengbing 51CTO博客,原文链接:http://blog.51cto.com/matengbing/1876374