如果在XML文本中出现“&”符号,则将内存流反序列化为类时发生错误

时间:2018-08-17 08:25:03

标签: c# xml xml-parsing

如果在XML文本中出现“&”符号,则在将内存流反序列化为类时出现错误。

[XmlRoot(ElementName="DesEng")]
public class DesEng {
    [XmlAttribute(AttributeName="unit")]
    public string Unit { get; set; }
    [XmlText]
    public string Text{ get; set; }
}

var xmlSerializer = new XmlSerializer(typeof(T));
var temp = (T)xmlSerializer.Deserialize(ms); // error

出现错误的行。

<DesEng unit="per Sector">GSM/LTE Dual Mode license for Blade&AAU</DesEng>

使用XmlWriterSettings {CheckCharacters = false}结果未带来。我收到一个错误“ XML文档中存在错误(229,70)”。 如果我将&符号更改为另一个符号,则该类中的反序列化将正确通过。

2 个答案:

答案 0 :(得分:1)

请尝试使用与号的转义符。您可以手动替换它,也可以在反序列化之前替换它。

View

为了将来参考,这些字符也需要转义:

&amp;

查看此问题中发布的答案:https://stackoverflow.com/a/1091953/2255454

答案 1 :(得分:0)

如果要在XML中添加“&”作为字符。尝试使用与号的转义符。

那么您的xml应该是:

<DesEng unit="per Sector">GSM/LTE Dual Mode license for Blade&amp;AAU</DesEng>