反序列化嵌套的XML到C#对象 [英] Deserializing nested xml into C# objects

查看:235
本文介绍了反序列化嵌套的XML到C#对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是从HTTP Web请求检索XML数据,并将数据反序列化到对象。

I am retrieving xml data from an http web request and deserializing the data into objects.

下面是一个简单的XML结构。

Here is a sample xml structure.

<users>
    <user>
        <name>...</name>
        <orders>
            <order>
                <number>...</number>
            </order>        
            ...
        </orders>
    </user>
    <user>
        <name>...</name>
        <orders></orders>
    </user>
    ...
</users>



我有四节课

I have four classes

public class Users
{
    [XmlElement("user")]
    public User[] UserList { get; set; }
}

public class User
{
    [XmlElement("name")]
    public string Name { get; set; }

    [XmlArray("orders")]
    public Orders OrderList { get; set; }
}

public class Orders
{
    [XmlElement("order")]
    public Order[] Order { get; set; }
}

public class Order
{
    [XmlElement("number")]
    public string Number { get; set; }
}



我觉得三个类应该是不够的 - 有一个令[]中用户类别和摆脱订单类。那可能吗?无论我试过没有工作。

I feel like three classes should be enough - have an Order[] in User class and get rid of 'Orders' class. Is that possible? Whatever I tried did not work.

感谢。

推荐答案

这应该工作

XmlSerializer ser = new XmlSerializer(typeof(Users));
var u = (Users)ser.Deserialize(stream);


[XmlRoot("users")]
public class Users
{
    [XmlElement("user")]
    public User[] UserList { get; set; }
}

public class User
{
    [XmlElement("name")]
    public string Name { get; set; }

    [XmlArray("orders"),XmlArrayItem("order")]
    public Order[] OrderList { get; set; }
}

[XmlRoot("order")]
public class Order
{
    [XmlElement("number")]
    public string Number { get; set; }
}

这篇关于反序列化嵌套的XML到C#对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆