2012-01-28 7 views
1

この問題があります。クライアントからデータを受信して​​います。ソケット接続を使用しています。しかし、これは重要ではありません。すべてのデータは、XDocumentオブジェクトを使用してXMLファイルに格納されます。 XDocument.Save(filestream)を呼び出して特定の文字や記号でデータを渡すときに、(16進文字が無効な)Exceptionを取得すると、XMLファイルに特殊文字が含まれないことがあります。 そのような例外を生成する可能性があるこの特殊文字のリストはどこにありますか?Xdocument.saveを呼び出す前にスキップする必要がある文字

+0

はい 'XML'は単なるテキストファイルではなく、必要なときにいつでも書くことはできますが、非常に頻繁に解決策があります。あなたが書いたコードの例を提供して例外を取得してください。 – Tigran

+0

おそらく、ドキュメントの一部の部分でCDATAを使用する必要があります。 http://msdn.microsoft.com/en-us/library/system.xml.linq.xcdata%28v=vs.100%29.aspx – oleksii

+0

詳細をもう少し詳しくお聞かせください。必ず完全なエラーメッセージと関連コードを記入してください。しかし、ダーリンは良い推測をしています。 –

答えて

4

[0x0-0x1F]の範囲の文字は0x9,0xA、0xDを除いて制御文字と呼ばれ、XMLでは使用できません。

ここXML specificationからの引用です:

[定義:解析されたエンティティは、マークアップまたはキャラクタデータを表すことができるテキスト、文字の並び、 が含まれています。] [定義: 文字がアトミックであるが、 ISO/IEC 10646:2000 [ISO/IEC 10646]で指定されているテキスト単位。法律上の文字は、タブ、復帰改行、改行、 、およびUnicodeとISO/IEC 10646の有効な文字です。 のバージョンは、A.1で引用したこれらの標準は、この文書が作成された の時点で最新です。新しい文字は、これらの 標準に修正または新しいエディションで追加することができます。その結果、XMLプロセッサー は、Charに指定された範囲内の任意の文字を受け入れる必要があります。 ]

文字範囲

Char :: =#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]/*任意のUnicode文字 (サロゲートブロック、FFFE、およびFFFFを除く)。 */

+0

書かれている場所によって異なります。 – Tigran

+2

@Tigran、いいえ、それには依存しません。 –

1

@ダリンによって与えられた答えは、あなたが正しい方向を指すようにする必要があります。 XMLSpyStylus Studioのようなxml開発用のツールをお持ちの場合は、問題の文字をすばやく特定することができます。あなたがそのようなツールを持っていない場合は、WC3学校からのオンラインXMLのバリデータを使用することができますが、ここが見つかりました:

http://www.w3schools.com/xml/xml_validator.asp

これは、XMLが整形されていることを確認しますと、それは無効な文字が含まれている場合、それはできませんよく形成される。

xmlドキュメントで指定されたエンコーディングが問題を引き起こす文字を許可している可能性があります。ドキュメントがUTF-8で指定されている場合、これはおそらく問題ではありません。

関連する問題