package Dom4JDemo;
import java.util.*;
import java.io.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class DOM4JShow {
private String XMLFileName;
public DOM4JShow(){
XMLFileName=new String("student.xml");
}
public void parse(Element ele){
//处理当前元素包含的所有属性
parseAttribute(ele);
//获取当前元素包含的所有子元素
List el = ele.elements();
//遍历每个子元素
for (Object e : el) {
Element element = (Element)e;
//如果该元素的内容不是只包含字符串
if (!element.isTextOnly()) {
parse(element);
}
else {
//处理当前元素的全部属性
parseAttribute(element);
//获取当前元素的内容
System.out.println(element.getQName().getName()
+ "--->" + element.getText());
}
}
}
//定义一个方法处理指定元素的所有属性
public void parseAttribute(Element ele) {
//获取Element元素的所有属性
List attList = ele.attributes();
//遍历Element元素每个属性
for (Object e : attList) {
Attribute attr = (Attribute)e;
//访问当前元素的每个属性的属性值
System.out.println(ele.getQName().getName() + "元素的"
+ attr.getQName().getName() + "属性值为:"
+ attr.getValue());
}
}
public void DOM4JUpdateFileShow(){
System.out.println("DOM4JUpdateFileShow() enter");
//使用SAXReader来解析XML文档
SAXReader reader = new SAXReader();
//忽略元素的开始标签、结束标签之间的空白
reader.setStripWhitespaceText(true);
//将元素之间相邻的文本内容合并处理
reader.setMergeAdjacentText(true);
Document doc;
try {
doc = reader.read(new File("mybook.xml"));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
Element root = doc.getRootElement();
//append one element into DOM4J tree to become the last element
Element pcBook = root.addElement("computerbook");
pcBook.addAttribute("isbn" , Math.round((Math.random() * 1000)) + "");
Element name = pcBook.addElement("name");
name.setText("XML Introduction");
Element price = pcBook.addElement("price");
price.setText(58.00 + "");
//insert another element from beginning (1st node)
List nodelist = root.content();
pcBook = DocumentHelper.createElement("computerbook");
pcBook.addAttribute("isbn" , Math.round((Math.random() * 1000)) + "");
name = pcBook.addElement("name");
name.setText("Python Introduction");
price = pcBook.addElement("price");
price.setText(28.00 + "");
//insert another element from beginning (1st node)
nodelist.add(0, pcBook);
//remove one computerbook element whose isbn=44, including its child node.
// 用xpath查找对象
List list = doc.selectNodes("/BookList/computerbook");
for(Element bookElement : (List<Element>) list){
if (bookElement.attribute("isbn").getValue().equals("44")) {
bookElement.getParent().remove(bookElement);
break;
}
}
//定义一个输出格式对象 for GBK if there are Chinese Text
OutputFormat format = new OutputFormat(" ", true, "GBK");
FileWriter fw;
try {
fw = new FileWriter("mybook.xml");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
XMLWriter writer = new XMLWriter(fw , format);
try {
//save changes into XML file
writer.write(doc);
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("DOM4JUpdateFileShow() exit");
return;
}
public void DOM4JCreateFileShow(){
System.out.println("DOM4JCreateFileShow() enter");
DocumentFactory factory = new DocumentFactory();
Document doc = factory.createDocument();
//向doc中添加根节点元素
Element root = doc.addElement("BookList");
//add 4 elements
for (int i = 0; i < 4 ; i++ )
{
Element pcBook = root.addElement("computerbook");
//add one attribute isbn to computerbook
pcBook.addAttribute("isbn" , (i+1)*11 + "");
//add child element name
Element name = pcBook.addElement("name");
name.setText("bookname" + i);
//add child element price
Element price = pcBook.addElement("price");
price.setText((i+1) * 10.0 + "");
}
//定义一个输出格式对象
OutputFormat format = new OutputFormat(" ", true, "GBK");
FileWriter fw;
try {
fw = new FileWriter("mybook.xml");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return;
}
XMLWriter writer = new XMLWriter(fw , format);
try {
writer.write(doc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("DOM4JCreateFileShow() exit");
return;
}
public void DOM4JReaderShow(){
System.out.println("DOM4JReaderShow() enter");
SAXReader reader = new SAXReader();
Document doc;
Element root;
try {
doc = reader.read(new File(XMLFileName));
root = doc.getRootElement();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
parse(root);
System.out.println("DOM4JReaderShow() exit");
return;
}
public static void main(String[] args) {
DOM4JShow minstance = new DOM4JShow();
minstance.DOM4JReaderShow();
minstance.DOM4JCreateFileShow();
minstance.DOM4JUpdateFileShow();
}
}
import java.util.*;
import java.io.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class DOM4JShow {
private String XMLFileName;
public DOM4JShow(){
XMLFileName=new String("student.xml");
}
public void parse(Element ele){
//处理当前元素包含的所有属性
parseAttribute(ele);
//获取当前元素包含的所有子元素
List el = ele.elements();
//遍历每个子元素
for (Object e : el) {
Element element = (Element)e;
//如果该元素的内容不是只包含字符串
if (!element.isTextOnly()) {
parse(element);
}
else {
//处理当前元素的全部属性
parseAttribute(element);
//获取当前元素的内容
System.out.println(element.getQName().getName()
+ "--->" + element.getText());
}
}
}
//定义一个方法处理指定元素的所有属性
public void parseAttribute(Element ele) {
//获取Element元素的所有属性
List attList = ele.attributes();
//遍历Element元素每个属性
for (Object e : attList) {
Attribute attr = (Attribute)e;
//访问当前元素的每个属性的属性值
System.out.println(ele.getQName().getName() + "元素的"
+ attr.getQName().getName() + "属性值为:"
+ attr.getValue());
}
}
public void DOM4JUpdateFileShow(){
System.out.println("DOM4JUpdateFileShow() enter");
//使用SAXReader来解析XML文档
SAXReader reader = new SAXReader();
//忽略元素的开始标签、结束标签之间的空白
reader.setStripWhitespaceText(true);
//将元素之间相邻的文本内容合并处理
reader.setMergeAdjacentText(true);
Document doc;
try {
doc = reader.read(new File("mybook.xml"));
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
Element root = doc.getRootElement();
//append one element into DOM4J tree to become the last element
Element pcBook = root.addElement("computerbook");
pcBook.addAttribute("isbn" , Math.round((Math.random() * 1000)) + "");
Element name = pcBook.addElement("name");
name.setText("XML Introduction");
Element price = pcBook.addElement("price");
price.setText(58.00 + "");
//insert another element from beginning (1st node)
List nodelist = root.content();
pcBook = DocumentHelper.createElement("computerbook");
pcBook.addAttribute("isbn" , Math.round((Math.random() * 1000)) + "");
name = pcBook.addElement("name");
name.setText("Python Introduction");
price = pcBook.addElement("price");
price.setText(28.00 + "");
//insert another element from beginning (1st node)
nodelist.add(0, pcBook);
//remove one computerbook element whose isbn=44, including its child node.
// 用xpath查找对象
List list = doc.selectNodes("/BookList/computerbook");
for(Element bookElement : (List<Element>) list){
if (bookElement.attribute("isbn").getValue().equals("44")) {
bookElement.getParent().remove(bookElement);
break;
}
}
//定义一个输出格式对象 for GBK if there are Chinese Text
OutputFormat format = new OutputFormat(" ", true, "GBK");
FileWriter fw;
try {
fw = new FileWriter("mybook.xml");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
XMLWriter writer = new XMLWriter(fw , format);
try {
//save changes into XML file
writer.write(doc);
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("DOM4JUpdateFileShow() exit");
return;
}
public void DOM4JCreateFileShow(){
System.out.println("DOM4JCreateFileShow() enter");
DocumentFactory factory = new DocumentFactory();
Document doc = factory.createDocument();
//向doc中添加根节点元素
Element root = doc.addElement("BookList");
//add 4 elements
for (int i = 0; i < 4 ; i++ )
{
Element pcBook = root.addElement("computerbook");
//add one attribute isbn to computerbook
pcBook.addAttribute("isbn" , (i+1)*11 + "");
//add child element name
Element name = pcBook.addElement("name");
name.setText("bookname" + i);
//add child element price
Element price = pcBook.addElement("price");
price.setText((i+1) * 10.0 + "");
}
//定义一个输出格式对象
OutputFormat format = new OutputFormat(" ", true, "GBK");
FileWriter fw;
try {
fw = new FileWriter("mybook.xml");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return;
}
XMLWriter writer = new XMLWriter(fw , format);
try {
writer.write(doc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("DOM4JCreateFileShow() exit");
return;
}
public void DOM4JReaderShow(){
System.out.println("DOM4JReaderShow() enter");
SAXReader reader = new SAXReader();
Document doc;
Element root;
try {
doc = reader.read(new File(XMLFileName));
root = doc.getRootElement();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
parse(root);
System.out.println("DOM4JReaderShow() exit");
return;
}
public static void main(String[] args) {
DOM4JShow minstance = new DOM4JShow();
minstance.DOM4JReaderShow();
minstance.DOM4JCreateFileShow();
minstance.DOM4JUpdateFileShow();
}
}