2017-03-22 17 views
1

XmlSerializerには、絵文字を含むコンテンツ(たとえば、��)の逆シリアル化(=そうでない)があります。私はそのような文字は実際にXML標準では違法であることを読んだ。ただし、絵文字を含むチャットの会話を忠実に表現したい場合は、それらは必要です。それらの文字だけを含む文字列を逆シリアル化して取得するにはどうすればよいですか?XmlSerializerと絵文字

(私は後でそれらの文字に対処する必要がありますが、のは、(デ):)それらをシリアライズし始めるようになる)

答えて

2

あなたはこのようにそれを行うことができます。最初のテストクラス:次に

[XmlRoot("root")] 
public class Test { 
    [XmlElement("data")] 
    public string Root { get; set; } 
} 

var test = "<root><data>&#55357;&#56877;</data></root>"; 
var s = new XmlSerializer(typeof(Test)); 
using (var reader = new StringReader(test)) { 
    using (var xmlReader = XmlReader.Create(reader, new XmlReaderSettings() { 
     CheckCharacters = false // key part 
    })) { 
     var obj = s.Deserialize(xmlReader); 
    } 
} 

XMLリーダーでCheckCharacters = falseを使用するには、任意の文字が有効なXML文字の範囲外であるかどうかをチェックするのを防ぐことができます。

+0

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