XmlSerializer 很难(= 不)反序列化包含表情符号字符的内容,例如 。我读过这样的字符在 XML 标准中实际上是非法的;但是,如果我想忠实地表示包含表情符号的聊天对话,则需要它们。如何反序列化并获取仅包含这些字符的字符串?
(稍后我将不得不处理这些字符,但让我们从(反)序列化它们开始:))
最佳答案
你可以这样做。第一个测试类:
[XmlRoot("root")]
public class Test {
[XmlElement("data")]
public string Root { get; set; }
}
然后:
var test = "<root><data>��</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 字符的范围。
关于c# - XmlSerializer 和表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42951144/