通过Dom4j读写XML文档

package org.ytl;

 

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";

public User() {
super();
// TODO Auto-generated constructor stub
}

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
User user = new User();
user.newXML();
user.readXML();
}

 

 

public void newXML(){
/**
 *  users.xml
 */
Document doc = DocumentHelper.createDocument(); //users.xml


/**
 * 根元素 users
 */
Element users = doc.addElement("users"); //根元素 users
doc.setRootElement(users);
users.addComment("the xml document about some login system information of users");


/**
 * 根元素 users 下的子元素 user
 */
Element user = users.addElement("user"); // 新增 users 的一个子元素 user
user.addAttribute("id","1"); //增加user的一个属性,并设置此属性值
Element username = user.addElement("username"); // 新增 user 元素的子元素 username
username.setText("yy"); //设置 username 的值
Element password = user.addElement("password"); // 新增 user 元素的子元素 password
password.setText("12345678"); //设置 password 的值

Element user2 = user.createCopy(); //通过对已有元素的拷贝,产生同一元素的不同实体
user2.attribute("id").setValue("2");
user2.element("username").setText("liyun");
user2.element("password").setText("87654321");
users.add(user2);  //根元素增加已有的子元素


/**
 * 通过 org.dom4j.io.OutputFormat 来设置XML文档输出格式
 */
OutputFormat format = OutputFormat.createPrettyPrint(); //设置XML文档输出格式
format.setEncoding("GB2312"); //设置XML文档的编码类型
format.setSuppressDeclaration(true);
format.setIndent(true); //设置是否缩进
format.setIndent("  "); //以空格方式实现缩进
format.setNewlines(true); //设置是否换行


/**
 *  通过 org.dom4j.io.XMLWriter 创建XML文档(写)
 */
try {
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(new File(xmlDocName)),format);
xmlWriter.write(users);
xmlWriter.close();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

 

public void readXML(){
SAXReader saxReader =  new SAXReader();
try {
/**
 *  先通过 org.dom4j.io.SAXReader 读入整份XML文档
 */
Document usersXMLDoc = saxReader.read(new FileInputStream(new File(xmlDocName)));


/**
 *  取得XML文档的各元素及其值
 */
Element users = usersXMLDoc.getRootElement(); //取得XML文档的根元素
Iterator users_subElements = users.elementIterator(); //以Iterator集合得到根元素下的所有子元素
//Iterator users_subElements = users.elementIterator("user"); //可以指定所要得到的子元素的名称
while(users_subElements.hasNext()){
  Element user = (Element)users_subElements.next();
  List user_subElements = user.elements(); //以List集合得到 user 下的所有子元素
  //List user_subElements = user.elements("username"); //可以指定名称取得所要取的元素
  for(int i=0;i<user_subElements.size();i++){
  Element ele = (Element)user_subElements.get(i);
  System.out.print(ele.getName()+" : "+ele.getText()+"   ");
  }
  System.out.println();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值