使用注释将XML列表解析为类型化对象

本文关键字:类型化 对象 列表 注释 XML | 更新日期: 2023-09-27 18:28:36

我有一个返回web服务的xml:

<return>
<LuckNumber>
    <Number>00092</Number>
    <CodError>00</CodError>
    <Serie>019</Serie>
    <Number>00093</Number>
    <CodError>00</CodError>
    <Serie>019</Serie>
    <Number>00094</Number>
    <CodError>00</CodError>
    <Serie>019</Serie>
    <Number>00095</Number>
    <CodError>00</CodError>
    <Serie>019</Serie>
</LuckNumber>

如何使用注释将此XML解析为类型化对象?

我试过了,但不起作用:

protected T ProccessResult<T>(string result) {
    XmlSerializer serializer = new XmlSerializer(typeof(T));
    using (StringReader reader = new StringReader(result))
    {
        var resultDeserialize = (T)(serializer.Deserialize(reader));
        return resultDeserialize;
    }
}
ProccessResult<List<GenerateNumberList>>(STRING_XML_ABOVE)

要解析的类:

[XmlRoot("LuckNumber")]
public class GenerateNumberResult
{
    [XmlElement("Number")]
    public string LuckNumber { get; set; }
    [XmlElement("CodError")]
    public string CodError{ get; set; }
    [XmlElement("Serie")]
    public string Serie { get; set; }
}

有人能帮我吗?谢谢

使用注释将XML列表解析为类型化对象

XML的根是"return"元素。添加一个包含列表的包装类:

[XmlRoot("return")]
public class ResultWrapper
{
    [XmlElement("LuckNumber")] 
    public List<GenerateNumberResult> numberList;
}

并得到结果:

ResultWrapper result = ProccessResult<ResultWrapper>(xml);