`

sax解析文件

    博客分类:
  • java
阅读更多
package sax;

import java.util.List;

import test.TestMain;

public class ListingModel {
private String id;
private String name;
private List<TextModel> textModelList;
private List<CouponModel> couponModelList;

...

}
------------

package sax;
public class TextModel {
private String link;
private String title;
        private String type;
...
}

-------------
package sax;
import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class InstallHandler extends DefaultHandler {
int point = 0;
ListingModel listingModel = new ListingModel();
List<TextModel> textModelList = new ArrayList<TextModel>();
TextModel textModel = new TextModel();
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Complete method stub for startElement
point = 0;
if (qName.equals("id")) {
point = SaxConstants.pointID;
}
if (qName.equals("name")) {
point = SaxConstants.pointName;
}
////content point
if (qName.equals("text")) {
point = SaxConstants.pointText;
if (attributes != null && attributes.getLength() != 0) {
for (int i = 0; i < attributes.getLength(); i++) {
textModel.setType(attributes.getValue(i));
}
}
}
if (qName.equals("link")) {
point = SaxConstants.pointTextLink;
}
if (qName.equals("title")) {
point = SaxConstants.pointTextTitle;
}
////
}

public void endElement(String uri, String localName, String qName)
throws SAXException {
        if (qName.equals("text")) {
        textModelList.add(textModel);
        listingModel.setTextModelList(textModelList);
        textModel = new TextModel();
}
point = 0;

}

public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Complete method stub for characters
String pointName = new String(ch, start, length);
switch (point) {
case SaxConstants.pointID:
listingModel.setId(pointName);
break;

case SaxConstants.pointName:
listingModel.setName(pointName);
break;

case SaxConstants.pointTextLink:
textModel.setLink(pointName);
break;
case SaxConstants.pointTextTitle:
textModel.setTitle(pointName);
break;
}
}

public ListingModel getListingModel() {
return listingModel;
}

public void setListingModel(ListingModel listingModel) {
this.listingModel = listingModel;
}
}


------------
注意:
1.sax可以解决dom解析大型文件的困难

2.sax顺序解析,dom一次性放入内存
分享到:
评论

相关推荐

    SAX解析XML文件实例

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

    sax解析文件,流解析

    得到xml文件对应的资源,可以是xml的输入流,文件和uri 得到SAX解析工厂(SAXParserFactory) 由解析工厂生产一个SAX解析器(SAXParser) 传入输入流和handler给解析器,调用parse()解析防止解析文件过大ooc溢出

    Sax解析XML文件解析

    1. **效率高**:SAX解析器只读取和处理当前需要的部分,不需要将整个XML文件加载到内存,尤其适合处理大型XML文档。 2. **内存消耗小**:与DOM解析器(将整个XML结构转化为内存中的树形结构)相比,SAX解析器对内存...

    sax解析xml文件

    在本项目中,"saxloadxml"应该是实现了一个SAX解析XML文件的示例,旨在帮助开发者理解和应用SAX解析。 首先,我们需要理解SAX解析的基本原理。当解析器读取XML文件时,它会触发一系列的事件,如开始文档、结束文档...

    Sax解析xml文件

    以下是一个使用SAX解析XML文件的基本步骤: 1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例。在Java中,这通常通过`SAXParserFactory`类完成。设置解析器属性,然后调用`newSAXParser()`方法获取`...

    dom解析和sax解析

    相比之下,SAX解析采用了事件驱动的方式,它不是将整个XML文档加载到内存中,而是逐行扫描XML文件,遇到元素开始、结束、属性等事件时触发相应的回调函数。例如,对于上述XML,SAX解析器会依次调用startElement、...

    SAX解析超大XML文件 示例代码

    SAX解析器逐行读取XML文件,只在需要时处理数据,显著降低了内存需求。 SAX解析的核心在于事件驱动模型。当解析器读取XML文件时,遇到开始元素、结束元素、字符数据等,它会触发相应的事件,并调用预先注册的处理器...

    [Android]使用SAX解析XML文件

    SAX解析器在读取XML文件时,会触发一系列的事件,例如开始文档、结束文档、开始元素、结束元素等。开发者需要创建一个实现了SAX解析器接口的类,即`DefaultHandler`或自定义的处理器,然后重写这些事件的方法,以便...

    Java SAX解析Xml文档Demo

    总的来说,Java中的SAX解析XML文档是一种高效且灵活的方式,尤其适用于处理大文件或资源有限的环境。通过创建自定义的事件处理器,我们可以精确地控制解析过程,只处理关心的数据,而忽略其他部分,从而优化性能。

    Servlet利用SAX解析XML文档

    对于小型XML文档,DOM解析可能是更简单的选择,但对于大型XML文件,SAX解析则是更好的解决方案。 在实际应用中,你可能还需要考虑错误处理,例如,处理XML格式错误或网络问题。同时,为了提高代码可读性和可维护性...

    dom4j下sax解析xml

    在提供的“analysis_xml”项目中,很可能包含了一个示例,演示了如何使用dom4j的SAX解析器解析XML文件。这样的测试项目有助于理解SAX解析的工作原理,并在实际开发中应用。 总结起来,dom4j库提供了DOM和SAX两种XML...

    android使用SAX解析xml

    本篇文章将详细介绍如何在Android环境中使用SAX解析器来处理从网络获取的XML文件。 1. **XML与SAX解析基础** - XML是一种结构化的文本数据表示方式,它定义了标签、属性等规则,使数据具有自解释性。 - SAX解析器...

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

    以下是一个简单的SAX解析示例,以处理名为`person.xml`的文件为例: ```java import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; public class PersonHandler extends ...

    SAX解析xml文件源码

    相较于DOM解析,SAX解析不将整个XML文档加载到内存中,而是采用事件驱动的方式,逐行读取并处理XML内容,因此在处理大型XML文件时更为高效。下面将详细介绍SAX解析XML文件的基本原理、工作流程以及在Android环境下...

    XML解析之SAX解析DEMO

    6. **性能优化**: 虽然SAX解析本身已经很高效,但可以通过预处理XML文件(如去除不必要的空白字符、压缩文件等)进一步提高解析速度。 总之,SAX解析是一种高效的XML处理方式,尤其适用于处理大型XML文件。在...

    xml文件解析SAX

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

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

    总结来说,SAX解析XML是一种高效且节省内存的方法,尤其适合处理大型XML文件。通过创建自定义的事件处理器,可以灵活地获取和处理XML元素的值。在实际开发中,根据项目需求和文件大小选择合适的解析方式,是优化性能...

    XML通过sax解析JSON格式

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

    天气预报接口,通过sax 解析接口数据

    接下来,我们将深入探讨天气预报接口、SAX解析以及如何处理XML数据。 首先,天气预报接口是一个API(Application Programming Interface),它提供了获取当前或未来天气信息的途径。这些接口通常由气象服务机构提供...

Global site tag (gtag.js) - Google Analytics