- 浏览: 224106 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (143)
- java (13)
- mongodb (15)
- linux (31)
- mysql (2)
- cache (1)
- Android (3)
- lucene (2)
- javascript (9)
- php (13)
- 人生 (2)
- solr (7)
- 跨域iframe (1)
- 统计学 (1)
- redis (0)
- amazon aws (2)
- 国内比较便宜的vps (1)
- nginx (5)
- sns api应用 (1)
- api (1)
- postfix (1)
- nodejs (1)
- gitlab (1)
- myeclipse (1)
- matlab (3)
- ubuntu (2)
- stardict (1)
- cdn (1)
- lajp (1)
- workerman (1)
- tensorflow (1)
- 协同推荐算法 (3)
- html5 (1)
- extensions (3)
- Rome (1)
- 正则 (1)
- EBS (1)
- python (5)
- https (1)
- iptables (1)
- facebook (0)
- ImageMagick (0)
- elasticsearch (1)
- Flask (1)
- wordpress (0)
- kubernetes (0)
最新评论
-
三尺寒冰:
怎么实现排序的?分析一下
php mongodb 实现group 并按照某字段排序
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一次性放入内存
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一次性放入内存
发表评论
-
java httpclient4.X 无法判断文件大小问题
2016-05-05 13:22 879httpclient4.X 网页抓取代码: InputSt ... -
HttpClients4.*版本超时设置
2016-04-21 17:58 682http://www.open-open.com/lib/vi ... -
JAVA线程安全之synchronized关键字的正确用法
2016-04-10 13:20 658http://blog.csdn.net/yaerfeng/a ... -
lajp 实现php高效调用java
2015-12-16 17:34 2519http://blog.chinaunix.net/uid-2 ... -
java调用支付宝支付接口
2016-05-21 20:02 819支付宝接口: 申请支付宝接口服务: 1.https://f ... -
linux 下多个java jdk 切换
2015-07-19 12:19 12071.先将可用的 JDK 添加到alternatives中 al ... -
linux 下安装JAVA JDK
2014-02-21 16:46 893一、下载安装JDK1.6 1、下载jdk1.6的官方地址: ... -
java 构造json对象
2011-09-19 18:11 5547import java.util.ArrayList; imp ... -
I/O字符流
2011-08-31 09:28 8891.输出流 BufferedWriter fos = new ... -
java 解压缩文件
2011-08-30 14:06 1111/** * http远程请求,获取csv数据 * ht ... -
工作队列池,线程池
2011-08-30 14:00 1714import java.util.LinkedList; ... -
socket服务器推送技术
2011-08-30 13:58 4291package duisong; import java.i ...
相关推荐
SAX解析XML文件的实例。一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml...
得到xml文件对应的资源,可以是xml的输入流,文件和uri 得到SAX解析工厂(SAXParserFactory) 由解析工厂生产一个SAX解析器(SAXParser) 传入输入流和handler给解析器,调用parse()解析防止解析文件过大ooc溢出
1. **效率高**:SAX解析器只读取和处理当前需要的部分,不需要将整个XML文件加载到内存,尤其适合处理大型XML文档。 2. **内存消耗小**:与DOM解析器(将整个XML结构转化为内存中的树形结构)相比,SAX解析器对内存...
在本项目中,"saxloadxml"应该是实现了一个SAX解析XML文件的示例,旨在帮助开发者理解和应用SAX解析。 首先,我们需要理解SAX解析的基本原理。当解析器读取XML文件时,它会触发一系列的事件,如开始文档、结束文档...
以下是一个使用SAX解析XML文件的基本步骤: 1. **创建解析器**: 首先,我们需要创建一个SAX解析器实例。在Java中,这通常通过`SAXParserFactory`类完成。设置解析器属性,然后调用`newSAXParser()`方法获取`...
相比之下,SAX解析采用了事件驱动的方式,它不是将整个XML文档加载到内存中,而是逐行扫描XML文件,遇到元素开始、结束、属性等事件时触发相应的回调函数。例如,对于上述XML,SAX解析器会依次调用startElement、...
SAX解析器逐行读取XML文件,只在需要时处理数据,显著降低了内存需求。 SAX解析的核心在于事件驱动模型。当解析器读取XML文件时,遇到开始元素、结束元素、字符数据等,它会触发相应的事件,并调用预先注册的处理器...
SAX解析器在读取XML文件时,会触发一系列的事件,例如开始文档、结束文档、开始元素、结束元素等。开发者需要创建一个实现了SAX解析器接口的类,即`DefaultHandler`或自定义的处理器,然后重写这些事件的方法,以便...
总的来说,Java中的SAX解析XML文档是一种高效且灵活的方式,尤其适用于处理大文件或资源有限的环境。通过创建自定义的事件处理器,我们可以精确地控制解析过程,只处理关心的数据,而忽略其他部分,从而优化性能。
对于小型XML文档,DOM解析可能是更简单的选择,但对于大型XML文件,SAX解析则是更好的解决方案。 在实际应用中,你可能还需要考虑错误处理,例如,处理XML格式错误或网络问题。同时,为了提高代码可读性和可维护性...
在提供的“analysis_xml”项目中,很可能包含了一个示例,演示了如何使用dom4j的SAX解析器解析XML文件。这样的测试项目有助于理解SAX解析的工作原理,并在实际开发中应用。 总结起来,dom4j库提供了DOM和SAX两种XML...
本篇文章将详细介绍如何在Android环境中使用SAX解析器来处理从网络获取的XML文件。 1. **XML与SAX解析基础** - XML是一种结构化的文本数据表示方式,它定义了标签、属性等规则,使数据具有自解释性。 - SAX解析器...
以下是一个简单的SAX解析示例,以处理名为`person.xml`的文件为例: ```java import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; public class PersonHandler extends ...
相较于DOM解析,SAX解析不将整个XML文档加载到内存中,而是采用事件驱动的方式,逐行读取并处理XML内容,因此在处理大型XML文件时更为高效。下面将详细介绍SAX解析XML文件的基本原理、工作流程以及在Android环境下...
6. **性能优化**: 虽然SAX解析本身已经很高效,但可以通过预处理XML文件(如去除不必要的空白字符、压缩文件等)进一步提高解析速度。 总之,SAX解析是一种高效的XML处理方式,尤其适用于处理大型XML文件。在...
- SAX解析器逐行读取XML文件,当遇到文档的开始、元素开始、元素结束、文本内容、注释等事件时,会调用预先注册的处理器接口(如`ContentHandler`)中的方法。 - 解析器并不关心这些事件的具体处理,只负责触发...
总结来说,SAX解析XML是一种高效且节省内存的方法,尤其适合处理大型XML文件。通过创建自定义的事件处理器,可以灵活地获取和处理XML元素的值。在实际开发中,根据项目需求和文件大小选择合适的解析方式,是优化性能...
标题中提到的"XML通过SAX解析为JSON格式"是指使用SAX解析器来读取XML文档,并将其转换成等效的JSON对象。SAX解析器以流式方式处理XML,当遇到文档的不同部分(如开始标签、结束标签、文本节点等)时,会触发相应的...
接下来,我们将深入探讨天气预报接口、SAX解析以及如何处理XML数据。 首先,天气预报接口是一个API(Application Programming Interface),它提供了获取当前或未来天气信息的途径。这些接口通常由气象服务机构提供...