2016-04-03 13 views
0

.NET XmlSerializerを使用して、オブジェクトのシリアル化とオブジェクトのシリアル化を行っています。 xmlには、大文字や小文字のようなエンコードされた特殊文字が含まれています。 xmlがオブジェクトにシリアライズされるとき、実際に "<"または ">"に変換されるより大きい/より小さいシンボルが必要です。オブジェクトからxmlに移動するときは、実際の "<"または ">"が必要ですエンコードされたバージョンに変換されます。Xmlのシリアル化/解体解除とhtml文字エンコーディング

私は変換を行うUIで/ハックのいくつかの回避策がありますが、これを処理するためのより良い方法を探しています。私はシリアル化/ deserealizeときにこれを行うだろう実際のシリアライザでいくつかのパラメータ設定があることを望んでいた。私は周りを見回し、シリアライザに渡される様々な作家/蒸気と遊んだが、何も見つけられなかった。

誰にでも最高の解決策がわかりますか?

答えて

0

XmlSerializerは、デフォルトで正確に行う必要があります。そうでない場合は、詳細を投稿できますか?

あなたがXMLにオブジェクトをシリアル化すると、<>のような文字列の値が自動的にエスケープされている - 彼らは要素に表示されないことができるようにこれらの文字がタグで使用されているため&lt;&gt;に変換します。

XMLを逆シリアル化してオブジェクトに戻すと、逆のことが行われ、<>が返されます。このコンソールアプリを見て、出力を取る:

class Program 
{ 
    static void Main(string[] args) 
    { 
     var myClass = new MyClass {Value = "<div>I am HTML!</div>"}; 
     var serializer = new XmlSerializer(typeof (MyClass)); 
     var xmlString = new StringBuilder(); 
     using (var writer = new StringWriter(xmlString)) 
     { 
      serializer.Serialize(writer, myClass); 
     } 
     Console.WriteLine("Serialized:"); 
     Console.WriteLine(xmlString.ToString()); 
     Console.WriteLine(); 
     using (var reader = new StringReader(xmlString.ToString())) 
     { 
      var deserializedClass = serializer.Deserialize(reader) as MyClass; 
      Console.WriteLine("Deserialized myClass.Value: " + deserializedClass.Value); 
     } 
     Console.ReadLine(); 
    } 
} 

Serialized: <?xml version="1.0" encoding="utf-16"?> <MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Value>&lt;div&gt;I am HTML!&lt;/div&gt;</Value>

Deserialized myClass.Value: <div>I am HTML!</div>

関連する問題