1,xml的生成与读取
package com.lee.dom4j;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class User {
private String xmlDocName = "users.xml";
//创建一个xml文件
public void newXML(){
Document doc = DocumentHelper.createDocument();
//创建一个根元素
Element users = doc.addElement("users");
doc.setRootElement(users);
users.addComment("the xml document use to login for users");
//根元素users下面的子元素
Element user = users.addElement("user");//新增users的一个子元素
user.addAttribute("id", "1");//增加一个user的属性,并赋值
Element username = user.addElement("username");
username.setText("zhangsan");
Element password = user.addElement("password");
password.setText("123456789");
Element user2 = users.addElement("user");
user2.addAttribute("id","2");
Element username2 = user2.addElement("username");
username2.setText("lisi");
Element password2 = user2.addElement("password");
password2.setText("987654321");
//通过 org.dom4j.io.OutputFormat 来设置XML文档输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gbk");
format.setSuppressDeclaration(true);
format.setIndent(true);//设置是否缩进
format.setIndent(" ");//以空格的方式实现缩进
format.setNewlines(true);//设置是否换行
/**
* 通过XMLWriter 创建xml文档
*/
try {
XMLWriter writer = new XMLWriter(new FileOutputStream(new File(xmlDocName)),format);
writer.write(users);
writer.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//读取xml文件
public void readXML(){
SAXReader saxReader = new SAXReader();
//通过SAXReader读取真个文档
try {
Document doc = saxReader.read(new FileInputStream(new File(xmlDocName)));
/**
* 获取xml文档的各个元素及其值
*/
Element users = doc.getRootElement();//取得xml文档的根元素
System.out.println(" " + users.getName());
/**
* Iterator 集合得到根元素下的所有子元素,
*可以指定多要得到的子元素的名称user
*/
Iterator it = users.elementIterator("user");
while(it.hasNext()){
Element user = (Element)it.next();
/**
* 以List集合得到 user 下的所有子元素
* 可以指定名称取得所要取的元素
*/
List users_subElements = user.elements("username");
for(int i=0;i<users_subElements.size();i++){
Element ele = (Element)users_subElements.get(i);
System.out.print(ele.getName() + " : " +ele.getText());
}
System.out.println();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
2,快速操作
package com.lee.dom4j;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class SelectNodes {
/**
* 使用XPath快速查找
*/
public static void main(String[] args){
SAXReader reader = new SAXReader();
try{
Document doc = reader.read(new File("sample.xml"));
List projects=doc.selectNodes("//projectDescription/projects/project");
Iterator it=projects.iterator();
while(it.hasNext()){
Element elm=(Element)it.next();
System.out.println(elm.getText());
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
3,
package com.lee.dom4j;
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Students {
public static void main(String[] args) {
try {
XMLWriter writer = null;// 声明写xml对象
SAXReader reader = new SAXReader();
// 对生成的xml文件进行格式化
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("gbk");
File file = new File("student.xml");
if (file.exists()) {
Document document = reader.read(file);// 读取XML文件
Element root = document.getRootElement();// 得到根节点
boolean bl = false;
for (Iterator i = root.elementIterator("学生"); i.hasNext();) {
Element student = (Element) i.next();
if (student.attributeValue("sid").equals("001")) {
// 修改学生sid=001的学生信息
student.selectSingleNode("姓名").setText("王五ooooo");
student.selectSingleNode("年龄").setText("25");
writer = new XMLWriter(new FileWriter("student.xml"), format);
writer.write(document);
writer.close();
bl = true;
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}