如何使用sax contenthandler获取标签之间的值?

时间:2012-03-27 08:13:03

标签: android xml sax

我正在使用ContentHandler解析一些XML,我可以很好地获取标签内的属性,但我不知道如何获取实际值。例如,采用这个简单的xml:

<code>
< thing id="12345" key="abcde" >

< description > Some text is here < /description >

< otherdata > I don't actually care about or want this text < /otherdata >

< /thing >
</code>

(抱歉格式化......) 因此,在我的StartElement()中,我可以使用att.getValue(“id”)获取id和键值。但是如何在描述标签之间获取文本?

基于阅读文档看起来我需要使用characters()方法,但这可能会出现在xml中的所有其他标签上(真实的例子比上面的更复杂,我不需要所有这些) - 如何将字符数组与特定标签相关联?所有它给我的是一个开始和一个长度,但从那里我不知道它与哪个元素有关。

我显然在这里遗漏了一些明显的东西,但我找到的文档或示例似乎都没有帮助 - 大多数示例只是显示整个文档被喷到控制台,这很好,但对我的场景没有帮助。

3 个答案:

答案 0 :(得分:2)

每当您解析startElement()中的描述时,您都可以设置标记值,并在endElement()内将其设为false。在此之间,您可以在characters()方法中获得描述值。

答案 1 :(得分:1)

使用 _data.sectionId = atts.getValue(“id”);

请参阅此链接以获取详细示例 http://www.jondev.net/articles/Android_XML_SAX_Parser_Example

答案 2 :(得分:1)

SAX是一种用于解析的非常低级的API,您为此付出的代价是您必须在应用程序代码中管理上下文和状态。几乎所有的SAX应用程序都会维护一堆元素名称,这样当文本到达时,你可以通过peek()在堆栈中知道它属于哪个元素。

SAX似乎在Android上变得非常流行,我不确定是否因为没有其他可用的东西,或者因为需要效率。但事实是,SAX是一个非常难以编程的界面,而且对于高性能而言,你需要付出沉重的可用性。