Java Dom4J XML 增,更新和查询的用法例子

7 篇文章 0 订阅
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();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值