萨克斯字符分开元素

时间:2011-08-09 10:07:42

标签: java sax

  

可能重复:
  JAVA SAX parser split calls to characters()

我有一个XML文件,其语法如下:

<tag ...>
a bunch of text here
<tag ...>

tag没有任何结束标记。我抓住两个标签之间的文本,并将其存储在List<String> characters ()中。它在大多数情况下都有效,但在某些xml文件中,它会读取行终止符或其他东西,将文本分成两部分;而不是存储单个条目,“这里有一堆文字”,我得到两个条目:“一堆”和“文字在这里”。区别在于,与所有其他条目不同,它不会在“一堆”之后或“此处文本”之前存储换行符。

我需要解决这个问题,但不知道如何解决。我很感激你的帮助。

1 个答案:

答案 0 :(得分:1)

允许解析器为每个元素文本字符串多次调用ContentHandler字符方法,它不会找到行终止符。 the Java tutorial on SAX对字符方法有简短说明:

  

解析器不需要一次返回任何特定数量的字符。解析器可以一次从单个字符返回任何内容,但仍然是符合标准的实现。因此,如果您的应用程序需要处理它看到的字符,那么使用characters()方法在java.lang.StringBuffer中累积字符并且只有在您确定已找到所有字符时才对它们进行操作是明智的。 / p>

同样this Javaworld article有很好的解释和例子。