Android プロジェクトで JDOM を使用していますが、サーバーの応答で特定の文字セットを取得するたびに、次のエラー メッセージが表示されます。
05-04 10:08:46.277: E/PARSE: org.jdom.input.JDOMParseException: ドキュメント UTF-8 の 95 行目のエラー: 95 行目、列 5263: 閉じられていないトークン
05-04 10:08:46.277: E/エラー ハンドラー: ハンドラーが失敗しました: org.jdom.input.JDOMParseException: 行 1 のエラー: 行 1、列 0: 構文エラー
google chrome で同じクエリを実行すると、すべての XML が正常に処理され、実際にトークンが閉じられていない領域がないことがわかります。アプリケーションの開発中に何度かこの問題に遭遇しましたが、解決策は常に奇妙な ASCII 文字 (データ フィールドにコピー/貼り付けされた著作権ロゴや商標文字など) を削除することでした。これらの文字を削除するか、削除して機能を続行するにはどうすればよいですか。これは、私の解析関数の 1 つの例です。
public static boolean parseUserData(BufferedReader br) {
SAXBuilder builder = new SAXBuilder();
Document document = null;
try {
document = builder.build(br);
/* XML Output to Logcat */
if (document != null) {
XMLOutputter outputter = new XMLOutputter(
Format.getPrettyFormat());
String xmlString = outputter.outputString(document);
Log.e("XML", xmlString);
}
Element rootNode = document.getRootElement();
if (!rootNode.getChildren().isEmpty()) {
// Do stuff
return true;
}
} catch (Exception e) {
GlobalsUtil.errorUtil
.setErrorMessage("Error Parsing XML: User Data");
Log.e(DEBUG_TAG, e.toString());
return false;
}
}