3

レガシー JavaME プロジェクトで kXML2 を使用しています。一部の属性にエンコードされたエンティティが含まれている XML を受信して​​います。呼び出しでその属性値を取得すると:

parser.getAttributeValue

例外をスローします。

XmlPullParserException: unresolved

このパーサーの最新バージョンをダウンロードしましたが、それでもこの動作が見られます。

問題のある行を XML から削除すると、エラーは発生しなくなります。

4

1 に答える 1

2

わかりました、ここで何が起こっているのですか:

このプロパティを設定しない限り、パーサーは属性内のエンティティをデコードする必要があります。

parser.setFeature(KXmlParser.FEATURE_PROCESS_DOCDECL, true);

ただし、この実装は、その行が呼び出されると例外をスローします。さて、パーサーのソース コードをデバッグしたところ、このプル パーサーの実装にはあまり一般的ではないエンティティで問題があることがわかりました。

したがって、次のように、パーサー エンティティ置換マップを独自の「奇妙な」エンティティで膨らませる必要があります。

parser.defineEntityReplacementText("Ntilde", "Ñ");

そして、すべてがうまくいきます。

于 2012-04-16T15:53:07.900 に答える