- 浏览: 415544 次
- 性别:
- 来自: 北京
-
最新评论
-
yadongliang:
this.class.getClassLoader().getResourceAsStream -
q316085319:
分享一篇android适配的好文章给你们,http://www ...
android 屏幕适配问题 -
wangyuheng:
一直不明白 多表操作的时候 应该怎么办 对应哪个domain ...
j2ee分层设计 -
humanchair:
"我比较喜欢搞清楚一个技术本身的发展历程,简而言之就 ...
Linux内存管理详解 -
Alex_SHT_JAVA:
写的还不错,简单易懂,3Q
android中CallBack的理解
这是一个大多数 SAX 应用程序实施的主要接口:如果需要通知应用程序基本解析事件,则它将实现此接口并且使用 在此接口中的事件顺序非常重要,它本身可镜像文档中信息的顺序。例如,在 startElement 事件与相应的 endElement 事件之间,元素的所有内容(字符数据、处理指令和/ 或子元素)都将以一定顺序出现。 此接口与现在不推荐使用的 SAX 1.0 DocumentHandler 接口相似,但它增加了对名称空间和报告跳过的实体(在非验证的 XML 处理器中)的支持。 实现者应该注意,在 实际上,不管怎样 "import ...*" 通常标志不简洁的编程,因此,用户应该将此作为一种功能而不是错误。 以下是其主要的方法: 强烈建议(但不是绝对需要)使用 SAX 解析器来提供定位器:如果是这样,则必须在调用 ContentHandler 接口中的任何其他方法之前调用此方法为应用程序提供定位器。 定位器允许应用程序确定任何与文档相关的事件的终止位置,即便是解析器不报告错误也是如此。通常情况下,应用程序将使用此信息报告它自己的错误(例如与应用程序的业务规则不匹配的字符内容)。由定位器返回的信息可能不足以供搜索引擎使用。 注意,该定位器仅在调用 SAX 事件回调期间,在 在其他任何事件回调(不包括 在此方法的说明和 SAX 解析器仅调用此方法一次,并且它将是解析期间最后调用的方法。直到解析器放弃解析(由于不可恢复的错误)或到达输入的结尾时,它才可以调用此方法。 此事件的信息对于常规的名称空间处理并非必需:当 但是,有这样几种情况,应用程序需要在字符数据或属性值中使用前缀,但在这里,前缀不能自动地安全扩展;必要时,start/endPrefixMapping 事件将为应用程序提供所需信息,以便应用程序本身可在这些上下文中扩展前缀。 注意,不能保证 start/endPrefixMapping 事件相互之间能够正确地嵌套:所有的 startPrefixMapping 事件将在相应的 对于 "xml" 前缀,永远不应有 start/endPrefixMapping 事件,因为它是预声明的和不可改变。 详细信息请参阅 解析器在 XML 文档中的每个元素的开始调用此方法;对于每个 startElement 事件都将有相应的 此事件允许每个元素最多有以下三个名称组件: 可以提供它们中的部分或全部,具体如何取决于 http://xml.org/sax/features/namespaces 和http://xml.org/sax/features/namespace-prefixes 属性的值: 注意,所提供的属性列表仅包括具有显式值(指定的或默认的)的属性:将忽略 #IMPLIED 属性。仅在 与 SAX 解析器会在 XML 文档中每个元素的末尾调用此方法;对于每个 endElement 事件都将有相应的 有关名称的信息,请参见 startElement。 解析器将调用此方法来报告字符数据的每个存储块。SAX 解析器能够用单个存储块返回所有的连续字符数据,或者可以将该数据拆分成几个存储块;但是,任何单个事件中的全部字符都必须来自同一个外部实体,以便定位器能够提供有用的信息。 应用程序不能尝试在指定的范围外从数组中读取数据。 单独的字符可以由不止一个 Java 编写代码时不能假定一次读入一个 注意,有些解析器将使用 验证解析器必须使用此方法来报告元素内容中的每块空白(请参阅“W3C XML 1.0 Recommendation”中的 2.10 节):如果非验证解析器能够解析和使用内容模块,则这些非验证解析器也可以使用此方法。 SAX 解析器能够用单个存储块返回所有的连续空白,或者可以将该数据拆分成几个存储块;但是,任何单个事件中的全部字符都必须来自同一个外部实体,以便定位器能够提供有用的信息。 应用程序不能尝试在指定的范围外从数组中读取数据。 解析器将为找到的每个处理指令调用一次此方法:注意,处理指令可以出现在主要文档元素的前面或后面。 SAX 解析器必须从不使用此方法报告 XML 声明(XML 1.0 的 2.8 节)或文本声明(XML 1.0 的 4.3.1 节)。 与 解析器将在每次跳过实体时调用此方法。如果非验证处理器尚未看到声明,则可以跳过实体(例如,因为该实体在外部 DTD 子集中声明)。所有的处理器都可以跳过外部实体,但具体情况取决于 接口 org.xml.sax.ContentHandler
setContentHandler
方法,向 SAX 解析器注册一个实例。解析器将使用该实例报告与基本文档相关的事件,如启动和终止元素与字符数据。java.net
包中还有一个 ContentHandler
类;这意味着以下实现方法可能并非明智之举import java.net.*;
import org.xml.sax.*;
setDocumentLocator
void setDocumentLocator(Locator locator)
startDocument
返回之后,调用 endDocument
之前,返回正确的信息。应用程序不应该尝试在任何时间都使用它。locator
- 可以返回任何 SAX 文档事件位置的对象Locator
startDocument
void startDocument() throws SAXException
setDocumentLocator
)之前,SAX 解析器仅调用此方法一次。SAXException
- 任何 SAX 异常,可能包装另外的异常endDocument()
endDocument
void endDocument() throws SAXException
ErrorHandler.fatalError(org.xml.sax.SAXParseException)
的说明之间存在着明显的冲突。在未来的主版本中解决这一不明确问题之后,关于解析器报告 fatalError() 或抛出异常后是否调用 endDocument() 这一点,客户将会十分明确。SAXException
- 任何 SAX 异常,可能包装另外的异常startDocument()
startPrefixMapping
void startPrefixMapping(String prefix, String uri) throws SAXException
http://xml.org/sax/features/namespaces
功能为true(默认)时,SAX XML 读取器将自动替换元素和属性名称的前缀。startElement
事件之前立即发生,所有的 endPrefixMapping
事件将在相应的 endElement
事件之后立即发生,但在其他情况下不能保证其顺序。prefix
- 声明的名称空间前缀。对于没有前缀的默认元素名称空间,使用空字符串。uri
- 将前缀映射到的名称空间 URISAXException
- 客户端可能会在处理期间抛出一个异常endPrefixMapping(java.lang.String)
, startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
endPrefixMapping
void endPrefixMapping(String prefix) throws SAXException
startPrefixMapping
。这些事件将始终在相应的 endElement
事件之后立即发生,但在其他情况下 endPrefixMapping
事件的顺序不能保证。prefix
- 被映射的前缀。当默认的映射范围结束时,这是一个空字符串。SAXException
- 客户端可能会在处理期间抛出一个异常startPrefixMapping(java.lang.String, java.lang.String)
, endElement(java.lang.String, java.lang.String, java.lang.String)
startElement
void startElement(String uri, String localName, String qName, Attributes atts) throwsSAXException
endElement
事件(即使该元素为空时)。所有元素的内容都将在相应的 endElement 事件之前顺序地报告。
http://xml.org/sax/features/namespace-prefixes
属性为 true (默认情况下为 false,并且对 true 值的支持是可选项)时属性列表才包括用于名称空间声明(xmlns* 属性)的属性。characters()
一样,属性值可以具有需要不止一个 char
值的字符。uri
- 名称空间 URI,如果元素没有名称空间 URI,或者未执行名称空间处理,则为空字符串localName
- 本地名称(不带前缀),如果未执行名称空间处理,则为空字符串qName
- 限定名(带有前缀),如果限定名不可用,则为空字符串atts
- 连接到元素上的属性。如果没有属性,则它将是空 Attributes 对象。在 startElement 返回后,此对象的值是未定义的SAXException
- 任何 SAX 异常,可能包装另外的异常endElement(java.lang.String, java.lang.String, java.lang.String)
, Attributes
,AttributesImpl
endElement
void endElement(String uri, String localName, String qName) throws SAXException
startElement
事件(即使该元素为空时)。uri
- 名称空间 URI,如果元素没有名称空间 URI,或者未执行名称空间处理,则为空字符串localName
- 本地名称(不带前缀),如果未执行名称空间处理,则为空字符串qName
- 限定的 XML 名称(带前缀),如果限定名不可用,则为空字符串SAXException
- 任何 SAX 异常,可能包装另外的异常
characters
void characters(char[] ch, int start, int length) throws SAXException
char
值组成。由于不能仅用十六位来表示字符,所以发生此情况的重要情形有两种。一种情形是,字符用代理项对 表示,使用两个特殊的 Unicode 值。此类字符在所谓的 "Astral Planes" 中,代码点在 U+FFFF 之上。另一种情形涉及到复合字符,如由一个或多个重音字符构成的基本字符。char
的算法将适用于字符单元;在某些情况下这些算法将拆分一些字符。这与在什么情况下 XML 允许有任意字符(如属性值、处理指令数据、注解以及从此方法中报告的数据)相关。通常还与 Java 代码控制国际化的文本时相关;该问题不是 XML 独有的。ignorableWhitespace
方法而不是此方法报告元素内容中的空白(验证解析器必须 这么做)。ch
- 来自 XML 文档的字符start
- 数组中的开始位置length
- 从数组中读取的字符的个数SAXException
- 任何 SAX 异常,可能包装另外的异常ignorableWhitespace(char[], int, int)
, Locator
ignorableWhitespace
void ignorableWhitespace(char[] ch, int start, int length) throws SAXException
ch
- 来自 XML 文档的字符start
- 数组中的开始位置length
- 从数组中读取的字符的个数SAXException
- 任何 SAX 异常,可能包装另外的异常characters(char[], int, int)
processingInstruction
void processingInstruction(String target, String data) throws SAXException
characters()
一样,处理指令数据可以具有需要不止一个 char
值的字符。target
- 处理指令目标data
- 处理指令数据,如果未提供,则为 null。该数据不包括将其与目标分开的任何空白SAXException
- 任何 SAX 异常,可能包装另外的异常。
skippedEntity
void skippedEntity(String name) throws SAXException
http://xml.org/sax/features/external-general-entities
和 http://xml.org/sax/features/external-parameter-entities
属性的值。name
- 所跳过的实体的名称。如果它是参数实体,则名称将以 '%' 开头,如果它是外部 DTD 子集,则将是字符串 "[dtd]"SAXException
- 任何 SAX 异常,可能包装另外的异常
发表评论
-
Android Retrofit的使用
2016-08-22 15:57 1403原文 http://blog.fangjie. ... -
如何使用-9Path工具
2014-09-11 11:09 11601、什么是9Path 它是一个对png图片做处理的一个工具 ... -
Android的onLayout、layout方法讲解
2014-09-11 11:10 3306onLayout方法是ViewGroup中子View的布局 ... -
android-View工作原理(四)view的layout过程
2014-09-10 15:29 12432刚过完自己的本命年,新的一年希望自己有个新的开始,祝自己在 ... -
android-View工作原理(三)视图大小计算过程(measure过程)
2014-09-10 15:28 7062一、android中view的measure过程总概 视 ... -
android- View工作原理(二)导致View重建原因
2014-09-10 15:27 1869导致View重建的原因有三个: 1、视图本身内部状态变化 ... -
android-View工作原理(一)事件传递原理详解
2014-09-10 15:25 3347转载请说明出处:http://blog.csdn.net/f ... -
Android-view事件传递机制
2014-09-10 15:21 1862Android中dispatchTouchEvent,onI ... -
利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)
2014-09-01 17:07 4517http://blog.csdn.net/rhljiayou ... -
Canvas drawText
2014-09-01 17:04 4510String str ="测试字符串"; ... -
Canvas的save和restore
2014-08-29 17:54 928http://www.cnblogs.com/xirihan ... -
Android中View的绘制过程 onMeasure方法简述 附有自定义View例子
2014-08-29 16:47 1332http://www.cnblogs.com/mengdd/ ... -
Android中View绘制流程以及invalidate()等相关方法分析
2014-08-29 16:46 1144http://blog.csdn.net/qinjuning ... -
view.getDrawingCache为空的解决办法
2014-08-29 16:40 4314http://blog.csdn.net/huangbiao ... -
LinearLayout 自动换行
2014-08-22 16:05 3097由于前段时间项目中使 ... -
android之自定义ViewGroup和自动换行的布局的实现
2014-08-22 16:03 989http://www.cnblogs.com/slider/ ... -
用TextView实现Rich Text---在同一个TextView中设置不同的字体风格
2014-08-22 16:04 1108http://blog.csdn.net/hitlion2 ... -
获取Android控件的宽和高
2014-04-22 16:10 1185http://blog.csdn.net/johnny901 ... -
使用LruCache缓存图片
2014-02-21 10:28 4688转载请注明出处http://blog.csdn.net/xi ... -
LruCache 缓存图片
2014-02-21 10:22 841http://www.bdqn.cn/news/201307 ...
相关推荐
2. **面向对象编程**:Apache::ContentHandler 基于 Perl 的面向对象编程,开发者可以通过创建新的类并继承 `Apache2::ContentHandler` 类来实现自定义的行为。这使得代码结构清晰,易于维护。 3. **性能优化**:...
从ContentHandler类的简单定义中,我们发现了一个非常相关的方法:public abstract class ContentHandler extends Object {public ContentHandler(); public abstract Object getContent(URI uri) throws ...
3、通过 SAXParser 创建 DefaultHandler 或自定义的 ContentHandler 实例,该实例将接收 XML 解析过程中触发的事件;4、调用 SAXParser 的 `parse()` 方法解析 XML 文件,传入 ContentHandler 实例;5、在 ...
首先,SAX解析器在Android中的实现主要依赖于`org.xml.sax`包,它提供了一系列接口和类,如`XMLReader`、`ContentHandler`、`EntityResolver`等。`XMLReader`是SAX解析的核心,负责读取XML文档并调用用户定义的事件...
4. 分配事件处理器:将你的`ContentHandler`子类实例设置为`XMLReader`的事件处理器,通过调用`XMLReader.setContentHandler(ContentHandler handler)`方法。 5. 开始解析:最后,使用`XMLReader.parse(InputSource...
分别使用ContentHandler接口和Pull实现”,这表明文章将介绍两种不同的XML解析方法:基于事件的SAX解析和基于拉取(Pull)方式的XML解析。标签“Android XML”确认了该文章将专注于Android平台。 在第一部分,文章...
2. **ContentHandler的实现**:ContentHandler是处理XML事件的核心接口,包含如startDocument、endDocument、startElement、endElement等方法。我们需要创建一个类并实现这个接口,覆盖这些方法,以便在解析过程中...
2. **ContentHandler实现**:接下来,你需要实现`ContentHandler`接口,定义处理XML事件的方法,如`startElement`、`endElement`和`characters`。这些方法会在XML文档相应部分被调用。 ```java class ...
开发者需要定义一个ContentHandler类来处理这些事件,当解析器遇到相应的XML元素时,就会调用ContentHandler中的方法。 下面是一份简单的SAX解析XML并导出到Excel的步骤: 1. **创建ContentHandler**: 首先,...
在实际应用中,你可能需要根据具体需求对ContentHandler进行扩展,例如,将解析结果存储到数据结构中,或者进行更复杂的业务逻辑处理。总之,SAXReader提供了一种高效、灵活的方式来处理XML文件,特别适合处理大量...
为了处理解析过程中遇到的元素、属性等事件,我们需要自定义一个`ContentHandler`,通常是继承自`DefaultHandler`的类。在这个类中,我们需要重写`startDocument()`, `startElement()`, `endElement()`和`...
2. **实现ContentHandler接口**:为了处理XML文档中的元素、属性等信息,我们需要创建一个实现了`org.xml.sax.ContentHandler`接口的类,并重写其中的方法,如`startElement()`, `endElement()`, `characters()`等。...
获取到XML数据后,我们需要创建一个SAX解析器并实现ContentHandler接口,这个接口定义了一系列回调方法,如startElement、endElement和characters等。下面是一个简单的ContentHandler实现: ```java class ...
SAX解析器读取XML文件时,遇到每个元素、属性、文本等都会触发相应的事件,开发者需要通过实现ContentHandler接口来处理这些事件。这种方式节省了内存,但需要编写更多的代码来处理解析过程。 **步骤1:引入SAX解析...
在这个例子中,`MyContentHandler`是你自定义的实现`org.xml.sax.ContentHandler`接口的类,用于处理SAX解析过程中触发的各种事件,如开始文档、结束文档、开始元素、结束元素等。 值得注意的是,XMLReaderFactory...
开发者需要定义一个ContentHandler类来处理这些事件,当解析器遇到相应的XML元素时,就会调用ContentHandler中的方法。 1. 创建ContentHandler:在Android中,我们通常继承`DefaultHandler`类并重写其方法,如`...
1. **ContentHandler**:这是最重要的接口,用于接收文档的逻辑内容。`characters()`方法用于处理文本节点的内容,它会在遇到文本节点时被调用。`endDocument()`方法则表示文档解析结束。 2. **DTDHandler**:处理...
- SAX解析器逐行读取XML文件,当遇到文档的开始、元素开始、元素结束、文本内容、注释等事件时,会调用预先注册的处理器接口(如`ContentHandler`)中的方法。 - 解析器并不关心这些事件的具体处理,只负责触发...
1. **创建ContentHandler**:ContentHandler是SAX解析的核心,它定义了一系列的回调方法,用于处理XML文档的各种事件。比如`startDocument()`会在解析开始时被调用,`endDocument()`则在解析结束时调用。`...
org.xml.sax包定义了SAX的基础接口,如XMLReader、ContentHandler、ErrorHandler、DTDHandler和EntityResolver。XMLReader接口是核心,用于设置或查找解析器的features和properties,注册事件处理器,并开始解析文档...