我有一个反序列化一些 XML 的方法,当 XML 上的所有属性都是字符串时它工作正常,但在这种情况下我们有这个 XML:
<root ReturnMessage="Test" Id=1234/>
反序列化的方法是:
public static bool TryDeserialize<T>(string stringXml, out T xml)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StringReader(stringXml))
using (XmlReader xmlReader = XmlReader.Create(reader))
{
if (serializer.CanDeserialize(xmlReader))
{
xml = (T)serializer.Deserialize(xmlReader);
return true;
}
xml = default(T);
return false;
}
}
我们用作通用的模型是:
[XmlRoot(ElementName = "root")]
public class Response
{
[XmlAttribute(AttributeName = "ReturnMessage")]
public string ReturnMessage { get; set; }
[XmlAttribute(AttributeName = "ID")]
public long Id { get; set; }
}
但是,当代码在 CanDeserialize 上停止时,会出现此异常:'1234' 是一个意外的标记。预期的标记是 '"' 或 '''。
不幸的是,我无法更改我们收到的 XML,所以,在这种情况下,我能做些什么来使用 CanDeserialize?