关于如何简单创建Xml文件和用SAX解析
2015-07-07 21:44
561 查看
今天简单的学习了下xml文件的创建和使用SAXReader来解析此类型文件。
在创建前,需要先导包,dom4j,这个是专门读写xml文件的。
首先在创建xml文件前。需要先考虑好,在这个文件中需要放置哪些元素。
例如,我准备弄个汽车来搞搞,那么他就有这么几个属性,
brand(品牌),colour(颜色),price(价格),那就需要先创建这个类
然后准备创建有这样一个对象的xml文件。
①创建一个放Car的集合,在此集合中初始化好个个属性。
②创建一个Document对象。用来存放内容。
③向Document添加一个根元素。
④向根元素中按照层级关系依次添加,构成整个xml内容
⑤同过XMLWriter写出,结束
--------------------------------------------------------------------------------------------------------
创建类省略,
按照步奏来做
public class Excise {
public static void main(String[] args) {
List<Car> carlist=new ArrayList<Car>();
carlist.add(new Car(1,"大众","白色",10000));
carlist.add(new Car(2,"奥迪","黑色",20000));
carlist.add(new Car(3,"宝马","红色",30000));
try{
Document document=DocumentHelper.createDocument();//创建document
Element root=document.addElement("list");//添加根元素
for(Car c:carlist){//遍历car中的所有元素
Element e=root.addElement("car");//在根目录下添加一个子目录
//在Car子目录之后追加了一个内容,.addAttribute(String name,String value)
e.addAttribute("id",String.valueOf(c.getId()));//往是id的子目录中添加相关信息
//.addElement(String str);提供了一个方法,用来指定的子目录的名字,因其返回的是Element的实例,所以可以进行追加操作
//.addText(String arg);往子目录中添加内容
e.addElement("brand").addText(c.getBrand());//往是Brand的子目录中添加相关信息
e.addElement("colour").addText(c.getColour());//往是colour的子目录中添加相关信息
e.addElement("price").addText(String.valueOf(c.getPrice()));//往是price的子目录中添加相关信息
}
XMLWriter xw=new XMLWriter();
//写出去文件的名字
xw.setOutputStream(new FileOutputStream("Car.xml"));
xw.write(document);
//必须手动关闭
xw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
--------------------------------------------------------------------------------------------------------------------------------------------
如何解析
①创建SAXReader用来解析xml文档
②明确需要解析的xml文件名,用SAXReader解析并生产Document文件
③通过Document来获取根元素
④通过遍历根标签的子标签,及其子标签一步步解析获取xml的全部内容
public class Excice {
public static void main(String[] args) {
try{
SAXReader sr=new SAXReader();//创建SAXReader
Document document=sr.read(new FileInputStream("Car.xml"));//指定需要解析的文件
Element root=document.getRootElement();//获取根元素(标签)
List<Element> c=root.elements();//创建一个集合用来存放根标签下的每个字标签
List<Car> car=new ArrayList();//创建一个集合用来放置子标签中的内容
for(Element cc:c){//遍历根元素中的每个子标签,获取子标签的内容
//Attribute attribute(String name)获取当前子标签指定的内容
int id=Integer.parseInt(cc.attribute("id").getValue());
//.elementText(String name);获取指定子标签的内容,返回的是String类型,因此int类型需要转型
String brand=cc.elementText("brand");
String colour=cc.elementText("colour");
int price=Integer.parseInt(cc.elementText("price"));
//将获取到的属性添加到car集合中
Car ccc=new Car(id,brand,colour,price);
car.add(ccc);
}
System.out.println(car);
}catch(Exception e){
e.printStackTrace();
}
}
}
在创建前,需要先导包,dom4j,这个是专门读写xml文件的。
首先在创建xml文件前。需要先考虑好,在这个文件中需要放置哪些元素。
例如,我准备弄个汽车来搞搞,那么他就有这么几个属性,
brand(品牌),colour(颜色),price(价格),那就需要先创建这个类
然后准备创建有这样一个对象的xml文件。
①创建一个放Car的集合,在此集合中初始化好个个属性。
②创建一个Document对象。用来存放内容。
③向Document添加一个根元素。
④向根元素中按照层级关系依次添加,构成整个xml内容
⑤同过XMLWriter写出,结束
--------------------------------------------------------------------------------------------------------
创建类省略,
按照步奏来做
public class Excise {
public static void main(String[] args) {
List<Car> carlist=new ArrayList<Car>();
carlist.add(new Car(1,"大众","白色",10000));
carlist.add(new Car(2,"奥迪","黑色",20000));
carlist.add(new Car(3,"宝马","红色",30000));
try{
Document document=DocumentHelper.createDocument();//创建document
Element root=document.addElement("list");//添加根元素
for(Car c:carlist){//遍历car中的所有元素
Element e=root.addElement("car");//在根目录下添加一个子目录
//在Car子目录之后追加了一个内容,.addAttribute(String name,String value)
e.addAttribute("id",String.valueOf(c.getId()));//往是id的子目录中添加相关信息
//.addElement(String str);提供了一个方法,用来指定的子目录的名字,因其返回的是Element的实例,所以可以进行追加操作
//.addText(String arg);往子目录中添加内容
e.addElement("brand").addText(c.getBrand());//往是Brand的子目录中添加相关信息
e.addElement("colour").addText(c.getColour());//往是colour的子目录中添加相关信息
e.addElement("price").addText(String.valueOf(c.getPrice()));//往是price的子目录中添加相关信息
}
XMLWriter xw=new XMLWriter();
//写出去文件的名字
xw.setOutputStream(new FileOutputStream("Car.xml"));
xw.write(document);
//必须手动关闭
xw.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
--------------------------------------------------------------------------------------------------------------------------------------------
如何解析
①创建SAXReader用来解析xml文档
②明确需要解析的xml文件名,用SAXReader解析并生产Document文件
③通过Document来获取根元素
④通过遍历根标签的子标签,及其子标签一步步解析获取xml的全部内容
public class Excice {
public static void main(String[] args) {
try{
SAXReader sr=new SAXReader();//创建SAXReader
Document document=sr.read(new FileInputStream("Car.xml"));//指定需要解析的文件
Element root=document.getRootElement();//获取根元素(标签)
List<Element> c=root.elements();//创建一个集合用来存放根标签下的每个字标签
List<Car> car=new ArrayList();//创建一个集合用来放置子标签中的内容
for(Element cc:c){//遍历根元素中的每个子标签,获取子标签的内容
//Attribute attribute(String name)获取当前子标签指定的内容
int id=Integer.parseInt(cc.attribute("id").getValue());
//.elementText(String name);获取指定子标签的内容,返回的是String类型,因此int类型需要转型
String brand=cc.elementText("brand");
String colour=cc.elementText("colour");
int price=Integer.parseInt(cc.elementText("price"));
//将获取到的属性添加到car集合中
Car ccc=new Car(id,brand,colour,price);
car.add(ccc);
}
System.out.println(car);
}catch(Exception e){
e.printStackTrace();
}
}
}
相关文章推荐
- 整理阅读的论文(三)
- tabBar 的显示
- 七月三号
- jQuery基础入门第一弹
- Linux socket关闭连接shutdown与close
- mini2440第一课《汇编点亮LED》
- 78.对学生成绩进行排序
- [一车大师]微信运营心得
- 【LeetCode】232. Implement Queue using Stacks
- android反射组件 (一个)java 它们的定义annotation基础知识
- STL之内存管理
- 开始玩hadoop 11 --Hbase 入门 shell基础命令
- c++强制类型转换:dynamic_cast、const_cast 、static_cast、reinterpret_cast
- 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1
- HTTP协议简介
- Java知多少(完结篇)
- 七月二号
- 破解TexturePacker加密资源 —— 使用IDA
- hdu 1719 Friend 数学推导
- OpenSSL windows 下编译