继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

DOM4J读写xml文件(欢迎指教!)

什么鬼_呀你
关注TA
已关注
手记 21
粉丝 4
获赞 25
                  生成xml文件

//运行示例:<?xml version="1.0" encoding="UTF-8"?>
<Students>
<student id="1">
<name>印寒</name><sex>女</sex><age>20</age><city>Beijing</city> </student>
<student id="2">
<name>林若允</name><sex>女</sex><age>20</age>
</student>
</Students>
//代码如下
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class DOM4J {

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    //调用document类中的documenthelper中的createdocument方法

Document d=DocumentHelper.createDocument();
//添加开始标签
Element Students=d.addElement("Students");
//第一个学生 添加父节点
Element student=Students.addElement("student");
//添加父节点中的属性及属性值
student.addAttribute("id", "1");
//添加子节点
Element name=student.addElement("name");
Element sex=student.addElement("sex");
Element age=student.addElement("age");;
Element city=student.addElement("city");
//添加子节点值
name.addText("印寒");
sex.addText("女");
age.addText("20");
city.addText("Beijing");
//第二个学生
Element ls=Students.addElement("student");
ls.addAttribute("id", "2");
Element n=ls.addElement("name");
Element s=ls.addElement("sex");
Element a=ls.addElement("age");;
n.addText("林若允");
s.addText("女");
a.addText("20");
//创造一个打印方式
OutputFormat of=OutputFormat.createPrettyPrint();
//添加xml文件的编码
of.setEncoding("UTF-8");
//设置缩进长度
of.setIndentSize(4);
//写入xml文件名字,创建一个输入流文件
XMLWriter x=new XMLWriter(new FileOutputStream(new File("students.xml")));
//调用新建文档(document)
x.write(d);
x.close();
}}
解析xml文件
//运行示例:========开始遍历某个学生==========
节点是:id--节点值是:1
节点是:name--节点值是:印寒
节点是:sex--节点值是:女
节点是:age--节点值是:20
========结束遍历某个学生==========
========开始遍历某个学生==========
节点是:id--节点值是:2
节点是:name--节点值是:林若允
节点是:sex--节点值是:女
节点是:city--节点值是:Beijing
========结束遍历某个学生==========
学生的id是:1
学生的姓名是:印寒
学生的年龄是:20
学生的性别是:女
学生的地址是:null
学生的id是:2
学生的姓名是:林若允
学生的年龄是:null
学生的性别是:女
学生的地址是:Beijing
//代码如下:
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class DOM4JText {

public static void main(String[] args) throws DocumentException {
    // TODO Auto-generated method stub
    ArrayList<student>TS=new ArrayList<student>();//创建学生对象集合

SAXReader reader=new SAXReader();
Document document=reader.read(new File("src/res/students.xml"));
Element S=document.getRootElement();//获取根节点
Iterator it=S.elementIterator();//父节点集合
while(it.hasNext()){
student d=new student();
System.out.println("========开始遍历某个学生==========");
Element student=(Element) it.next();//遍历学生个数
List<Attribute> stulist=student.attributes();//遍历父节点
for(Attribute attr:stulist){
if(attr.getName()=="id")d.setId(attr.getStringValue());
System.out.println("节点是:"+attr.getName()+"--节点值是:"+attr.getStringValue());
}
Iterator child=student.elementIterator();//子节点集合
while(child.hasNext()){
Element childName=(Element)child.next();
if(childName.getName()=="name"){d.setName(childName.getStringValue());}
if(childName.getName()=="sex"){d.setSex(childName.getStringValue());}
if(childName.getName()=="age"){d.setAge(childName.getStringValue());}
if(childName.getName()=="city"){d.setCity(childName.getStringValue());}
System.out.println("节点是:"+childName.getName()+"--节点值是:"+childName.getStringValue());
}
System.out.println("========结束遍历某个学生==========");

TS.add(d);
d=null;//清空对象,方便下一次运行
}
//遍历学生对象集合
for(student t:TS){
System.out.println("学生的id是:"+t.getId());
System.out.println("学生的姓名是:"+t.getName());
System.out.println("学生的年龄是:"+t.getAge());
System.out.println("学生的性别是:"+t.getSex());
System.out.println("学生的地址是:"+t.getCity());

}
}
}
*不足之处望多多指教!谢谢!

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP