0

SAX パーサーを使用して XML ドキュメントを解析しています。データがチャンクで提供されるという事実を考慮して、文字メソッドを使用して 2 つの要素タグ間で提供されるデータをキャプチャしています。

StringBuilder currentText = new StringBuilder();

...

public void characters(char ch[], int start, int length) {
        if (currentText!=null) {
            for (int i=start; i<start+length; i++) {
                currentText.append(ch[i]);
            }

次に、私が使用しているendElementメソッドで:

public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
        System.out.println("Current Text is " + currentText.toString());
        currentText.setLength(0);

}

問題は、ログを見ると、currentText が XML 内の一部の大きなデータ フィールドの内容全体をキャプチャしていないことです。

なぜこれが起こっているのか誰にも分かりますか?

ありがとうございました。

4

1 に答える 1

0

currentText==null の可能性は常にあります。その可能性を排除することはできますが、私たちにはできません。

追加を行うための文字ループは非常に非効率的であることに注意してください。使用できます

public StringBuilder append(char str[], int offset, int len)

ignorableWhitespace コールバックに報告された空白の一部が欠落している可能性がありますが、空白のみが欠落している場合は、私たちに報告したと思います。

申し訳ありませんが、これ以上提案することはできません。私の祖母のモットーに従ってください。何かを探していて見つからない場合は、間違った場所を探しているということです。だからどこかを見てください。

于 2012-05-09T14:31:52.950 に答える