当我的 XML 属性为数字时 CanDeserialize 出错

问题描述 投票:0回答:0

我有一个反序列化一些 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?

c# xml xml-serialization
© www.soinside.com 2019 - 2024. All rights reserved.