サードパーティの REST Web サービスを使用しています。私がやっていることは、SAX パーサーを使用して応答を解析することです。<section>
それに応じて、それぞれに 1 つのタグとその他のタグを含むタグのコレクションがあります<text>
。このテキストは基本的に製品のレビューであるため、ユーザーは好きなもの (または ws-provider の Web サイトで許可されているもの) を入力できます。<text>
このタグを 1 か所で解析中に問題が発生しました。1 つのケースでのみ 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 に対してメソッドが 2 回呼び出される理由です。私がデバッグしたところ、最初はchar[] ch
テキストが含まれている状態で呼び出され"Prachtige vormgeving...."
、2 回目は空の文字列が呼び出され、実際のテキストが上書きされたため、これらの特定のレビュー アイテムのレビュー テキストがありませんでした。何故ですか?これはバグですか?
追加のチェックを行いました。既にテキストがある場合は、次回はテキストの割り当てを無視します。したがって、それでも正しく動作します。また、2回目に呼び出されたとき、qNameは空の文字列ですが、初めて「TEXT」であることがわかりました。(それはpublic void startElement(String uri, String localName, String qName, Attributes attributes)
方法にあります)。私のJavaは1.5_06で、OC4J 10.1.3.5にアプリをデプロイしています。
繰り返しますが、質問は次のとおりです。これはバグですか? それとも通常の動作で、SAX 解析に関する知識が欠けているだけですか?