SAXParser有时会给我带来不好的价值

时间:2012-07-01 11:16:37

标签: android xml saxparser

这很奇怪..

我有一个实际处理好一切的DefaultHandler,但有时候,由于没有明显的原因,它会给我0而不是正确的值。这种情况每次都发生在同一个地方,所以有些不对劲但我无法弄清楚是什么!

问题是这个。我正在解析像“17:00:00”这样的时间。当解析器到达“奇怪的时间”时,它将像这样解析它 - > “17:00:0”,再次调用方法字符(char [] ch,int start,int end),并解析最后一个“0”。

WTF?

实际上,它会将结尾设置为7而不是8.除了一些值之外,这对所有事情都有效!

代码非常简单,它只是一个简单的saxparser。这是字符方法:

    public void characters(char[] ch, int start, int end) {
    if(on_element)
        value = new String(ch, start, end);
    }

任何提示?

1 个答案:

答案 0 :(得分:3)

对于一对打开和关闭标记中的文本,可以多次调用characters方法。

您的代码假设它只被调用一次,这对于小数据通常是正确的,但并非总是如此。

您需要在startElement方法中为该标记初始化缓冲区,在characters方法中收集缓冲区,并将缓冲区转换为endElement中的字符串。 / p>

我对this question where the user was making the same mistake的回答包含一些代码,用于纠正用户发布的更完整的代码。阅读可能会帮助您使用代码。