`
弄月吟风
  • 浏览: 197152 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

XML解析SAX解析器

阅读更多

在Android上的xml解析方法又三种,SAX,DOM,和Pull解析器,关于这三种方案的解析效率其实本质上是没什么区别的,但是我们在编程的时候根据不同的需求进行选择,比如只需要读取xml内容的时候,我们就可以选择SAX或者Pull进行,因为这个解析方案所占用的内存比较小,对于CPU的负荷占有也比较小,但是如果需要对xml进行写操作则就必须使用DOM来做。打个比方,Pull和SAX解析就好比是走马观花,看到什么就拿什么,但是dom的话就是一个逐句逐个的进行解析,由于时间限制,暂时就介绍一个SAX解析,因为这个比较常用,下面是SAX解析器的主程序代码:

 

  首先定义一个解析方法类MyHandler,也就是相当于解析算法,这个类是继承DefaultHandler

  SAXParserFactory factory = SAXParserFactory.newInstance();

  XMLReader readerfactory.newSAXParser().getXMLReader();

  reader.setContentHandler(MyHandler);// xmlReader设置内容处理器

  reader.parse(new InputSource(new StringReader(result)));// 开始解析文件 

如果我们要解析的xml文件内容为:<LoginDescriptor>

       <!-- 状态(0:失败,1:成功) -->

       <State>0</State>

       <!—状态信息 -->

       <Message>xxxx</Message>

       <!-- 用户编号 -->

       <UserID>xxx</UserID>

   </LoginDescriptor>

<!--EndFragment-->

,则我们定义的SAX解析算法为:

 

public class LoginDB extends DefaultHandler {

private Login obj = null;

// public static String State,UserID,Message,Model;//声明变量

private String tagName;

// 读取根

@Override

public void startDocument() throws SAXException {

obj = new Login();

System.out.println("======begin=========");

 

}

// 开始读取元素

@Override

public void startElement(String uri, String localName, String qName,

Attributes attributes) throws SAXException {

// TODO Auto-generated method stub

this.tagName = localName;

super.startElement(uri, localName, qName, attributes);

}

 

// 读取内容

@Override

public void characters(char[] ch, int start, int length)

throws SAXException {

if (tagName.equals("UserID")) {

obj.setUserID(new String(ch,start,length).toString());

System.out.println("UserID = " + new String(ch, start, length));

} else if (tagName.equals("State")) {

obj.setState(Integer.parseInt(new String(ch, start, length)

.toString()));

} else if (tagName.equals("Message")) {

obj.setMessage(new String(ch, start, length).toString());

}

@Override

public void endElement(String uri, String localName, String name)

throws SAXException {

}

@Override

public void endDocument() throws SAXException {

 

System.out.println("======end=========");

}

// 取值

public Login getLoginList() {

return obj;

}

}

 

Login是一个简单的类,里面就只有set和get方法:

 

public class Login {

private int HttpStatus; // HTTP状态 0 表示成功,1 表示失败

private int State; // 状态

private String Message; // 提示消息

private String UserID; // UserID

private String Model; // 机型

       、、、、、、、

}

 

 

 

分享到:
评论

相关推荐

    JDK自带xml解析器dom+sax

    JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax

    XML文件c语言 dom和sax模式解析

    XML文件解析器 支持dom解析和sax模式解析,c语言实现

    xml解析文件sax解析

    虽然SAX(Simple API for XML)解析器是解析XML十分方便的工具,但开发和维护SAX解析器是十分困难的,本文会告诉你如何使用XML Schemas中的信息来生成一个SAX解析器的框架源码,并且完成解析xml的技术

    Android XML解析之SAX方式

    在Android中,常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器. 这里的源代码介绍的是Android XML解析之SAX方式

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

    NULL 博文链接:https://lujo20121128.iteye.com/blog/1736765

    XML SAX解析

    xml

    android入门级解析xml SAX

    SAX是一个解析速度快并且占用内存少的xml解析器,非常适合用于Android等移动设备。 SAX解析XML文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中,SAX会判断当前读到的字符...

    jsp操作xml源码,解析器为DOM和SAX

    利用JSP直接读写XML文件,分别用DOM解析器和SAX解析器加以实现,非常适合初学者入门,作为一个了解jsp与XML的台阶

    sax_解析生成xml

    一个实现SAX的解析器(也就是“SAX Parser”)以一个串流解析器的型式作用,拥有事件驱动API。由使用者定义回调函数,解析时,若发生事件的话会被调用。SAX事件包括: XML 文字 节点 XML 元素 节点 XML 虚理指令 ...

    sax2.0.1jar,xml文件解析

    SAX是一种解析速度快并且占用内存少的XML解析器,非常适用于Android的移动设备。 SAX采用事件驱动`,也就是说,它并不是需要解析完整的文档,在按内容顺序解析文档的过程中,Sax会判断当前读到的字符是否符合XMl语法...

    VTD-XML 不同于SAX和DOM的XML高效解析器

    不同于SAX和DOM的XML高效解析器,内存占用少,速度快,支持XPATH;用多种语言实现,C,JAVA等

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细XML的四种解析器原理及性能比较,超详细

    XML_DOM_SAX.rar_ XML_DOM_SAX_c# sax_dom解析xml_xml parser csharp_x

    用C#编写的XML解析器,DOM和SAX都有实现

    数据解析,小型 XML 解析库

    Mini-XML 是一个小型 XML 解析库,您可以使用它来读取应用程序中的 XML 数据文件或字符串,而无需大型非标准库 读取 UTF-8 和 UTF-16 并写入 UTF-8 编码的 XML 文件和字符串。 数据存储在链表树结构中,保留 XML ...

    XML(SAX与DOM解析)内附实例与PPT

    XML处理器(通常称为解析器) Web 应用程序的基本构建快 解析 XML 并为应用程序提供其所需的信息 解析器的类型 进行验证的解析器 检查 XML 文档的有效性和格式规范 不进行验证的解析器 检查 XML 文档的格式规范

    PULL解析xml的demo

    XML解析有三种方式 1,DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据; 优点:简单直观,但需要将文档读取到内存, 缺点:并不太适合移动设备; 2,SAX SAX是一...

    详细的XML解析笔记

    本文档详细的给出了XML的介绍和XML解析的实例。包括DOM4J和SAX解析,节点的名和值得读取,属性的读取。生成XML文件等

    webservice远程调用,返回数据生成xml文件,并通过SAX解析出来

    webservice远程调用,返回String数据并生成xml文件到本地工程,在通过SAX解析器把数据解析出来。这是webservice应用的一个简单的例子。根据该例子的思想,可以实现很多功能了。例如把client工程的sayHello方法改为...

    XML程序设计第7章SAX解析器

    XML程序设计第7章SAX解析器

    Python3基于sax解析xml操作示例

    利用SAX解析XML文档牵涉到两个部分:解析器和事件处理器。 解析器负责读取XML文档,并向事件处理器发送事件,如元素开始跟元素结束事件; 而事件处理器则负责对事件作出相应,对传递的XML数据进行处理。 1、对大型文件...

Global site tag (gtag.js) - Google Analytics