我正在使用一些第三方 REST Web 服务。我正在做的是用 SAX 解析器解析它的响应。作为回应,我有一组<section>
标签,每个标签都包含一个<text>
标签和更多标签。该文本基本上是对产品的评论,因此用户可以在那里输入他喜欢的任何内容(或 ws-provider 网站上允许的内容)。<text>
我在一个地方解析这个标签时遇到了问题。仅在一种情况下,只有 30 条评论的回复,它的行为很奇怪。
这是一段正在解析的xml
<text>Prachtige vormgeving. RVS/Zwart, zoals afbeelding hierbij. Even de handleiding doorlezen en daarna zeer handig in gebruik. Koffie is heerlijk. Heet water voor thee of zelfs kopje Nescafé. Cups zijn eur 0,31/0,33 per stuk. Via de site kan je een startersaanbieding met presentatiekist bestellen.<br/>Sommige onderdelen zijn natuurlijk heet, pas op met kinderhandjes. Kortom: zeer tevreden!!<br/> </text>
我已经实现org.xml.sax.helpers.DefaultHandler
了我做所有事情的地方。奇怪的是为什么我的 public void characters(char[] ch, int start, int length)
方法为上面的 xml 调用了两次。我调试并发现第一次使用char[] ch
包含文本调用它"Prachtige vormgeving...."
,第二次使用空字符串调用它,导致真实文本被覆盖,因此我没有这些特定评论项目的评论文本。这是为什么?这是一个错误吗?
我做了一个额外的检查,如果我已经有了文本,那么下次忽略文本分配。所以它仍然可以正常工作。我还发现,当它第二次被调用时,qName 是一个空字符串,而第一次它是'TEXT'。(它在public void startElement(String uri, String localName, String qName, Attributes attributes)
方法中)。我的 java 是 1.5_06,在 OC4J 10.1.3.5 上部署我的应用程序。
再次,问题是:这是一个错误吗?还是正常行为,我只是错过了一些有关 SAX 解析的知识?