这很奇怪..
我有一个实际处理好一切的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);
}
任何提示?
答案 0 :(得分:3)
对于一对打开和关闭标记中的文本,可以多次调用characters
方法。
您的代码假设它只被调用一次,这对于小数据通常是正确的,但并非总是如此。
您需要在startElement
方法中为该标记初始化缓冲区,在characters
方法中收集缓冲区,并将缓冲区转换为endElement
中的字符串。 / p>
我对this question where the user was making the same mistake的回答包含一些代码,用于纠正用户发布的更完整的代码。阅读可能会帮助您使用代码。