关于如何简单创建Xml文件和用SAX解析

原创 2015年07月07日 21:44:02

今天简单的学习了下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();
        }
    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

简单SAX解析详解全过程

SAX解析: Java JDK自带的解析(SAXParserFactory SAXPaeser DefaultHandler) 特点:一行一行的往下面执行解析的 startDocment starte...
  • lsh364797468
  • lsh364797468
  • 2016年05月05日 19:13
  • 1992

java--通过sax方式解析xml文件的简单实例

1.重写的继承自DefaultHandler的方法,部分代码如下: @Override public void startElement(String uri, String localName,...
  • a1491758730
  • a1491758730
  • 2015年10月18日 09:36
  • 763

XML使用SAX解析与PULL解析的区别

XML使用SAX解析与PULL解析的区别在最近的应用中,经常会用到对XML的解析,但是一直有一个疑问就是SAX解析与PULL解析的区别到底是什么。搜索了相关的问题,整理如下,以便大家查询。我们知道,S...
  • zhliro
  • zhliro
  • 2015年07月10日 15:18
  • 1918

SAX解析,生成xml文件

1、优缺点 优点: SAX 从根本上解决了 DOM 在解析 XML 文档时产生的占用大量资源的问题。其实现是通过类似于流解析的技术,通读整个 XML 文档树,通过事件处理器来响应程序员对于 XML...
  • huanghanqian
  • huanghanqian
  • 2016年04月23日 00:56
  • 1220

使用SAX方式解析XML

一、创建XML文件 目录结构: 二、新建一个带有main方法的类(SAXTest.java)public class SAXTest { public static void main(S...
  • L_in12
  • L_in12
  • 2016年07月13日 14:17
  • 4921

XML解析(一),SAX解析XML

一、概述 SAX,全称Simple API for XML,是一种以事件驱动的XMl API,是XML解析的一种新的替代方法,解析XML常用的还有DOC解析,PULL解析(Android特有),SAX...
  • ydxlt
  • ydxlt
  • 2015年12月05日 09:38
  • 15080

利用Dom,Sax,Pull三种方式解析xml文件

最近找工作,看到许多公司的要求里都写了要会xml解析,所以就把之前的xml解析知识又重新回顾了一下,写个小例子. 解析xml文件常用的几种方式也就dom,sax,pull了,并且面试官经常问到的也是这...
  • qiang_xi
  • qiang_xi
  • 2015年11月29日 20:15
  • 1160

Java解析xml文档之SAX解析

sax解析是一种边读边解析,仅向前读取,不能修改,用来读。sax创建XMLReader三步:SAXParserFactory factory = SAXParserFactory.newInstanc...
  • new___Smile
  • new___Smile
  • 2016年07月16日 00:59
  • 3570

XML解析之SAX解析过程代码详解

上一篇谢了解析原理和过程,这里应用代码直观认识这个原理: 新建Demo1类: import java.io.File; import javax.xml.parsers.SAXParser; ...
  • qq_32059827
  • qq_32059827
  • 2016年05月31日 13:12
  • 944

SAX解析与DOM解析的区别

1.SAX解析(Simple API for XML) SAX解析方式:逐行扫描文档,一遍扫描一遍解析。相比于DOM,SAX可以在解析文档的任意时刻停止解析解析,是一种速度更快,更高效的方法。 优点:...
  • sinat_27170093
  • sinat_27170093
  • 2017年01月07日 13:50
  • 911
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于如何简单创建Xml文件和用SAX解析
举报原因:
原因补充:

(最多只允许输入30个字)