2012-03-27 44 views
0

我使用ContentHandler解析了一些XML,并且我可以在标签内获得很好的属性,但是我看不到如何获取实际值。例如,利用这个简单的XML:如何使用sax contenthandler获取标签之间的值?

<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> 

(道歉格式有...) 所以,在我的起始元素()我可以得到的ID和键值罚款att.getValue(“ID” ) 例如。但是,如何获取描述标签之间的文本?

基于阅读文档,它看起来像我需要使用characters()方法,但这大概会出现在xml中的所有其他标签中(实际示例比上述更复杂,而且我不需要所有它) - 我如何将字符数组关联到特定的标记?它给我的只是一个开始和一个长度,但是我不知道它与哪个元素相关。

我很明显在这里丢失了一些明显的东西,但没有找到任何文档或示例似乎有所帮助 - 大多数示例仅显示整个文档被喷出到控制台,这很好,但无助于我的场景。

回答

2

你可以把标志值时,你解析描述startElement()内,并使其成为endElement()内假此链接。在此之间,您可以在characters()方法中使用描述值。

+1

谢谢,我认为它现在正在工作 – James 2012-03-27 08:52:46

+1

感谢,清晰和简洁:) – 2013-12-03 14:10:59

1

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

参照详细的例子 http://www.jondev.net/articles/Android_XML_SAX_Parser_Example

+0

谢谢 - atts已经开始工作了,但是您给我的链接与Paresh的建议相结合帮助了很多 – James 2012-03-27 08:53:21

+0

如果您想在Android中使用不同的解析器进行XML解析的任何帮助,请查看此链接http:// www。 ibm.com/developerworks/opensource/library/x-android/index.html – Aditya 2012-03-27 09:02:08

1

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

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

相关问题