`
teachertina
  • 浏览: 12352 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

xml解析-续-之Sax

    博客分类:
  • xml
xml 
阅读更多

Sax 解析:

public class SaxXml {
public static List<Person> getXml(InputStream inputStream) throws Exception {

//获取解析工厂
SAXParserFactory factory =SAXParserFactory.newInstance();

//解析器
SAXParser saxParser = factory.newSAXParser();

//实例化解析器所需要的halder对象
SaxHalder saxHalder = new SaxHalder();

//进行解析
saxParser.parse(inputStream,saxHalder);
return saxHalder.getPerList();
}

/**DefaultHandler类是SAX2事件处理程序的默认基类。它继承了EntityResolver、DTDHandler、ContentHandler和ErrorHandler这四个接口。包含这四个接口的所有方法,所以我们在编写事件处理程序时,可以不用直接实现这四个接口,而继承该类,然后重写我们需要的方法*/
}

 

/**

*实现了defaultHandler

*/

public class SaxHalder extends DefaultHandler {
List<Person> perList = new ArrayList<Person>();
Person person ;
String tag = "";

@Override
public void startDocument() throws SAXException {
perList = new ArrayList<Person>();
}

@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
if ("person".equals(name)) {
person = new Person();
person.setId(Integer.valueOf(attributes.getValue("id")));
}
tag = name;
}


//该方法中的ch把所解析的xml的所有数据都保存进来,且ch初始化为2K数据。 start是一个节点">"的位置.

//length就是">"到下个"<"的长度
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String date = new String(ch,start,length);
if ("name".equals(tag)) {
person.setName(date);
}else if ("age".equals(tag)) {
person.setAge(Integer.valueOf(date));
}
}

@Override
public void endElement(String uri, String localName, String name)
throws SAXException {
if ("person".equals(name)) {
perList.add(person);
}
tag ="";
}
public List<Person> getPerList() {
return perList;
}

public void setPerList(List<Person> perList) {
this.perList = perList;
}

}

 

分享到:
评论

相关推荐

    java解析xml数据---sax解析器

    Java解析XML数据主要涉及到的是对XML文档的读取和处理,SAX(Simple API for XML)解析器是一种基于事件驱动的解析方式,适用于处理大型XML文件。与DOM(Document Object Model)解析器不同,SAX不需要一次性加载...

    Android网络之数据解析----SAX方式解析XML数据

    1. 创建XML解析器:首先,我们需要创建一个XMLReader对象,它是SAX解析器的接口,可以通过XMLReaderFactory类来实例化。 2. 设置事件处理器:然后,我们为XMLReader对象设置一个ContentHandler,这是一个接口,包含...

    SAX解析XML文件实例

    SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...

    Sax解析XML文件解析

    SAX(Simple API for XML)是XML解析的一种方法,它以事件驱动的方式处理XML文档,非常适合处理大体积的XML文件,因为它不需要一次性加载整个文件到内存,而是逐行读取,因此节省了资源。 **SAX解析XML的基本原理:...

    xmlschema-core-2.0.3的jar

    Java的DOM、SAX和StAX等API虽然也能处理XML,但它们不直接支持XML Schema。而XML Schema Core库为Java开发者提供了一个更强大且专业的工具,专门用于XML Schema相关的任务,特别适合在Spring Web服务中使用。 综上...

    dom-sax解析XML文件-java

    XML文件的解析主要分为两种方式:DOM(Document Object Model)和SAX(Simple API for XML)。本文将详细探讨这两种解析方式,并通过实例对比它们的特点和使用场景。 **DOM解析** DOM解析器将整个XML文件加载到内存...

    XML-java.rar_XML SAX_sax_sax xml_sax 解析 xml_xml using dom

    - 演示如何配置和实现SAX事件处理器,处理XML解析过程中的各种事件,如开始元素、结束元素、字符数据等。 - 可能还包括对比DOM和SAX解析的性能测试,以及在不同场景下选择哪种解析方式的建议。 通过学习这些示例,...

    sax解析xml文件

    SAX(Simple API for XML)是一种轻量级的XML解析技术,主要用于读取XML文档。相较于DOM(Document Object Model)解析器,SAX解析器占用更少的内存和处理时间,因为它不会一次性加载整个XML文档到内存,而是采用...

    XML解析之SAX解析DEMO

    本文将深入探讨XML解析中的SAX(Simple API for XML)解析方法,并结合一个具体的Android 4.0网络编程示例进行详细讲解。 SAX解析是一种基于事件驱动的解析方式,它不会一次性加载整个XML文档到内存,而是逐行读取...

    XML四种解析方式------DOM SAX JDOM DOM4J

    JDOM是Java特有的XML解析库,它提供了更符合Java习惯的API来操作XML。与DOM类似,JDOM也创建一个文档对象模型,但它的设计更简洁,易于使用。相比DOM,JDOM的性能稍好,因为它减少了对象创建和内存使用,但对大型XML...

    sax解析xml本地读取xml

    SAX(Simple API for XML)是XML解析器的一种,它采用事件驱动的方式对XML文档进行解析,而不是一次性加载整个文档到内存中,因此在处理大型XML文件时,SAX解析器具有较高的性能和较低的内存消耗。 标题“sax解析...

    Java SAX解析Xml文档Demo

    Java SAX(Simple API for XML)解析器是一种基于事件驱动的XML解析方式,它不将整个XML文档加载到内存中,而是逐行读取,当遇到某个事件(如开始标签、结束标签等)时,会触发相应的事件处理器方法。这种方式节省了...

    sax解析xml尤其是获取元素的值或者内容

    SAX(Simple API for XML)是XML解析的一种方式,它采用事件驱动模型,适用于处理大型XML文档,因为它不需要将整个文档加载到内存中。本文将深入探讨如何使用SAX解析XML并获取元素的值或内容。 首先,SAX解析器以...

    Sax解析xml文件

    在Android和Java编程中,处理XML文件是常见的任务,而SAX(Simple API for XML)是一种轻量级、事件驱动的XML解析器,它以流式方式读取XML文档,只在需要时解析内容,因此非常适合处理大体积的XML文件。 SAX解析器...

    SAX--XML文件读写

    1. 创建XML解析器:使用`SAXParserFactory`工厂类创建`SAXParser`对象,通过`newSAXParser()`方法得到。 2. 设置内容处理器:创建一个实现了`ContentHandler`接口的类,并重写其中的方法,如`startElement()`、`...

    android使用SAX解析xml

    - Android提供了两种主要的XML解析方式:DOM(文档对象模型)和SAX。DOM解析器将整个XML文档加载到内存中形成一棵树,适合小规模数据;SAX则更适用于大文件,因为它按需解析。 3. **SAX解析流程** - 创建`...

    Servlet利用SAX解析XML文档

    1. **创建Servlet**:首先,你需要创建一个Servlet类,继承HttpServlet,并重写doGet或doPost方法,因为XML解析通常发生在HTTP请求处理中。 2. **添加SAX解析器依赖**:在项目中,确保已包含SAX解析器的依赖。在...

    读取RSS-SAX解析XML实例(java版)

    而SAX(Simple API for XML)是一种事件驱动的XML解析器,它不像DOM(Document Object Model)那样将整个XML文档加载到内存中,而是逐行解析,因此对于大型XML文件,SAX解析更高效。 标题"读取RSS-SAX解析XML实例...

    xml文件解析SAX

    SAX(Simple API for XML)是XML解析的一种方式,它以事件驱动的方式处理XML文档,适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存中。 在SAX解析中,XML文档被读取一次,遇到特定的元素、属性或其他...

Global site tag (gtag.js) - Google Analytics