2010-12-15 8 views
4

SAXパーサーを使用してXMLファイルからデータを抽出するAndroidアプリケーションがあります。データの中には、一部のCDATAタグ内に見つかっているものがあり、改行文字を含むことがあります。これらの改行文字は、解析中に削除されています。どうすればそれらを保存できますか?Android SAX解析:CDATAタグ内から改行を保持する方法

ところで、回答はhereでしたが、「& #xA」と書いてあると思いました。 CDATAタグ内では、 "
"という結果になります。私はそれを解析するとき。

誰にも提案はありますか?

ありがとうございます。

+0

あなたは、このトピックを見ることができます: http://stackoverflow.com/questions/3401111/preserve-newlines-when-parsing-xml/14071260#14071260 –

答えて

2

改行は、通常の文字であってもCDATAセクション内であっても、パーサーによって削除されません。しかしどちらの場合も、さまざまな改行(Unix、Windows、Mac)は1文字の標準( "unix"、\ n)改行に正規化されています。提案されたような文字エンティティを使用することを除いて、この正規化が起こらないようにする方法はありません。これはCDATAセクションでは実行できません。

しかし、なぜこの正規化を防止したいのですか?これを表示するには、\ nを任意のローカル改行(macでは\ r、Windowsでは\ r \ nシーケンス)に置き換えることができます。

+0

は、StaxMan、ありがとうございました。ただし、 "\ n"文字は、実際には解析中に削除されます。彼らは削除されるべきではないと知っていますが、そうです。それが問題だ。これを防ぐために設定する必要のある種類の不動産はありますか? – mahdaeng

+0

どのSAXパーサーがAndroidを使用していますか?これが実際に発生した場合、報告されるバグのように聞こえます。私は使用したパーサ(Xerces、Woodstox)でそれらを削除するプロパティを認識していません。このような設定を有効にするのは奇妙です。 しかし、それらが削除されているか、コンソールにテキストを印刷しているだけですか?おそらくコンソールにラインフィードが表示されていないだけでしょうか? HTMLをWebページに含めると、HTMLはすべての空白を照合します。私はこれが問題であった場合があったので私は尋ねています。 – StaxMan

+0

ありがとう、StaxMan。どのSAXパーサーが使われているのかよくわかりません。そしてあなたが正しいかもしれません - それは報告すべきバグかもしれません。私はこの問題に別の方法でアプローチすることを決めました。私はCDATAタグを使用せず、潜在的に問題のある文字をすべてマークアップに置き換えます(たとえば、 "<"を "<"に置き換えてください)。これにより、CDATAタグが不要になり、改行に ""ソリューションを使用できるようになります。あなたの提案をありがとう。 – mahdaeng

関連する問題