3

XML 形式で情報を保存する C# で記述された .NET アプリケーションがあります。アプリケーションは、アプリケーション データを xml にシリアル化します。アプリケーションには、ユーザーが自由にテキストを入力できるテキストボックスが含まれています。ほとんどの場合、他のアプリケーションからテキストをコピーしてテキストボックスに貼り付けたときに、ユーザーが文字を入力できたことがあり、xml ドキュメントが破損します。入力時にすべてのテキストボックスでそれらを除外することなく、xml ドキュメント内の不正な文字を管理する一般的な方法はありますか?

破損したドキュメントのサンプル

<Propery>
  <Name>&#x8;Alimentação Controlador</Name>
  <Value>24</Value>
  <Unit>Vca</Unit>
</Propery>

ドキュメントは ASCIIEncoding.UTF8 でシリアル化されます

4

4 に答える 4

3

あなたの最善の策は、ユーザーが入力した文字列を「SafeEncode」することだと思います。このリンクhttp://msdn.microsoft.com/en-us/library/system.security.securityelement.escape(VS.80).aspxは、SecurityElement.Escape(string s ) 方法。

于 2012-09-05T09:02:30.130 に答える
1

次の不正な文字を次の文字に置き換える必要があります。

&lt;(<)

&amp;(&)

&gt;(>)

&quot;(")

&apos;(')

于 2015-07-10T08:27:26.493 に答える
0

CDATA を使用したい場合は、この「罪を犯した」文字を使用することもできます

ここを見て

于 2012-09-05T09:07:11.920 に答える
-1

JTMon が提案するベスト プラクティスを使用する必要があります。

XMLにエクスポートするときにも同じ状況に遭遇しました。それがうまくいくかどうかはわかりませんが、stringbuilder代わりstringにxmlを生成するために使用してみてください。

これも試すことができます

i.SubItems[0].Text.Trim('\0')

それが役立つことを願っています。

于 2012-09-05T09:12:58.820 に答える