SAX Parser在换行后没有阅读

时间:2012-04-10 19:20:55

标签: java sax

我正在使用SAX解析器来解析预先形成的文本,如下所示:

<content><![CDATA[(a) Definitions. 
   (i) term - Definition of term
   (ii) term 2 - Definition of term 2
   (iii) term 3 - Definition of term 3]]>
</content>

我的处理程序

public void characters(char ch[], int start, int length){
    if (content) {
        contentText = new String(ch, start, length));
    }   
}     

但是我只在我的角色缓冲区中获得第一行“(a)定义。”。其他行未被复制。如何访问缺失的行?

谢谢。

2 个答案:

答案 0 :(得分:5)

根据SAX parser specification,您可能会获得characters的多个回调,代表相同字符块的块。您应该将连续的组合成一个字符串。

  

Parser将调用[characters]方法来报告每个字符数据块。 SAX解析器可以在一个块中返回所有连续的字符数据,或者它们可以将它分成几个块;但是,任何单个事件中的所有字符都必须来自同一个外部实体,以便Locator提供有用的信息。

答案 1 :(得分:1)

无法保证使用完整文本调用characters()。您需要整理每个调用的结果,并在处理完结束元素后检查字符串。