0

私の例の1つ(JNIを使​​用したAndroid)でpugiXMLを使用しています。たとえば、中国語または日本語で書かれたXMLファイルを解析しようとしていますが、常に取得されます

  • case status_end_element_mismatch : 「開始タグと終了タグの不一致」を返します。ほとんどの場合、XML ファイルの近くまたは末尾のランダムな行にあります。

  • で解析結果を取得します

pugi::xml_document doc; pugi::xml_parse_result result = doc.load(File._Buffer); if (result){ __android_log_print(ANDROID_LOG_INFO, "MyExample", "XML [ %s ] ;parsed without errors, attr value:[ %s ] ",File._Buffer , doc.child("node").attribute("attr").value()); else { __android_log_print(ANDROID_LOG_INFO, "MyExample", "Error description: %s" , result.description()); __android_log_print(ANDROID_LOG_INFO, "MyExample", "Error offset: %ul" , result.offset); }

私の英語の XML は問題なく動作します。

さまざまなバリデーターを使用して XML ファイルをチェックしましたが、「手作業で行ごとに」チェックしたところ、タグが欠落しておらず、すべてのバリデーターが有効な XML ファイルであることを確認しました。

私のファイルは 1 mg 以下です。pugiXML を 9 mg 以上のファイルで成功裏に使用した人がいると読んだことがあるので、メモリの問題ではありません。

誰かがこの種の問題を抱えていましたか?誰かがいくつかの指針を持っている場合は?

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

4

1 に答える 1

0

慎重に分析した結果、問題はファイルを開く際の情報にありました。複数の XML ファイルを読み取っていたので、読み取ろうとしていた元のファイルよりも小さい間違ったファイルのサイズを読み取っただけです。

pugiXML は別の (より小さい) ファイルからサイズのファイルを読み取り、読み取り中にファイルが切り詰められ、終了親タグが単に行を閉じませんでした。そのため、Pugixml は「開始-終了タグの不一致」というエラーを報告しました。

適切なサイズが与えられると、xml の解析はうまく機能します。この件に関して多大なご協力をいただいた Zeuxcg に感謝します。助けてくれてありがとう。

于 2015-06-22T19:19:39.517 に答える