`
弄月吟风
  • 浏览: 199211 次
  • 性别: 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; // 机型

       、、、、、、、

}

 

 

 

分享到:
评论

相关推荐

    Sax解析XML文件解析

    SAX解析器以流式的方式读取XML文档,当遇到文档的各个元素时,会触发相应的事件,如开始文档、开始元素、结束元素、字符数据等。程序员通过实现SAX解析器的回调接口来处理这些事件,从而解析XML内容。这种方式使得...

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

    Java解析XML数据主要涉及到...总的来说,SAX解析器是Java处理XML文档的一种高效方式,特别适合处理大文件或资源有限的情况。通过自定义事件处理器,我们可以灵活地解析XML文档中的特定信息,而不必一次性加载整个文档。

    sax解析xml本地读取xml

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

    XML解析之SAX解析DEMO

    3. **事件处理**: 在解析过程中,SAX解析器会调用我们在`DefaultHandler`子类中定义的方法。例如: - `startElement(String uri, String localName, String qName, Attributes attributes)`:当遇到开始元素时,uri...

    sax解析xml文件

    相较于DOM(Document Object Model)解析器,SAX解析器占用更少的内存和处理时间,因为它不会一次性加载整个XML文档到内存,而是采用事件驱动的方式逐个处理XML元素。在本项目中,"saxloadxml"应该是实现了一个SAX...

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

    首先,SAX解析器以流式方式读取XML文档,当遇到文档的不同部分时,会触发相应的事件,如开始文档、开始元素、结束元素等。开发者可以注册事件处理器来响应这些事件,从而获取XML元素的信息。 1. **初始化解析器**:...

    Android XML解析 SAX DOM Pull

    在Android中,有三种主要的XML解析方式:SAX(Simple API for XML)、DOM(Document Object Model)和Pull Parser。下面将详细介绍这三种解析方式,并结合person类的实例进行讲解。 1. SAX解析: SAX是一种事件驱动...

    android xml文件解析 SAX

    SAX是一种事件驱动的XML解析器,它不会像DOM解析器那样将整个XML文档加载到内存中,而是逐行读取,遇到每个元素或属性时触发相应的事件回调。这种方式节省了内存,特别适合处理大型XML文件。 1. **SAX解析的基本...

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

    总结来说,C语言中的XML解析涉及到DOM和SAX两种模式,DOM适合小到中型XML文件,提供方便的数据访问和修改;SAX则适合大型XML文件,以节省内存。Xerces-C++库为这两种解析方式提供了强大的支持,通过注册事件处理器或...

    JDK自带xml解析器dom+sax

    代码示例中没有给出完整的SAX解析器实现,但通常会包括`SAXParserFactory`创建`SAXParser`,然后使用`parse`方法解析XML文件,并传入自定义的`DefaultHandler`子类实例。 总结: DOM解析器适合对XML文档进行随机...

    xml文件解析SAX

    - SAX解析器逐行读取XML文件,当遇到文档的开始、元素开始、元素结束、文本内容、注释等事件时,会调用预先注册的处理器接口(如`ContentHandler`)中的方法。 - 解析器并不关心这些事件的具体处理,只负责触发...

    Java SAX解析Xml文档Demo

    首先,我们需要引入SAX解析器的依赖库,通常这可以通过在项目构建配置中添加JAXB或Xerces实现来实现。 ```java // 引入必要的库,如使用Java内置的SAX解析器,通常无需额外导入 // 如果使用第三方库,例如Apache ...

    xml sax解析

    SAX解析器遵循XML规范,如XML 1.0或XML 1.1。 2. **事件处理程序(Event Handler)**:当解析器读取XML文档时,会调用预先注册的事件处理程序方法,例如startElement()、endElement()、characters()等。 3. **解析...

    Android XML解析——Sax解析XML

    SAX解析器以流式方式读取XML文档,遇到元素、属性等结构时会触发相应的事件回调。开发者需要定义一个ContentHandler类来处理这些事件,如开始元素、结束元素、字符数据等。这种方式避免了整个XML文档加载到内存中,...

    XML SAX解析

    SAX解析器逐行读取XML文档,当遇到如文档开始、元素开始、元素结束、属性等结构时,会触发相应的事件,并调用用户定义的处理器方法。这种方式使得SAX解析相比DOM(Document Object Model)更加轻量级和高效,因为它...

    XML通过sax解析JSON格式

    标题中提到的"XML通过SAX解析为JSON格式"是指使用SAX解析器来读取XML文档,并将其转换成等效的JSON对象。SAX解析器以流式方式处理XML,当遇到文档的不同部分(如开始标签、结束标签、文本节点等)时,会触发相应的...

    XML解析器示例

    而SAX解析器则是事件驱动的,逐个处理XML元素,适合处理大型XML文件,因为它不需要一次性加载整个文档。 在"Parse XML"这个子VIs中,你可能看到包含以下功能的模块: 1. XML文件选择器:用户可以通过这个界面组件...

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

    本压缩包文件“XML-java.rar”包含了关于使用Java解析XML的实例,特别强调了SAX解析器的使用,并且提到了使用JDOM和JOM4J这两个Java库来处理XML。 1. **DOM解析**:DOM是一种树型结构,它将整个XML文档加载到内存中...

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

    常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...

    XML的SAX解析

    SAX解析器以事件驱动的方式工作,它读取XML文档,当遇到文档的开始、元素开始、元素结束、文本内容等事件时,会触发相应的回调函数。这种方式避免了整个文档加载到内存中,适合处理大文件或资源有限的环境。 以下是...

Global site tag (gtag.js) - Google Analytics