为了账号安全,请及时绑定邮箱和手机立即绑定

如何将xml序列化/反序列化为C#对象?

如何将xml序列化/反序列化为C#对象?

C#
喵喵时光机 2021-05-13 18:19:19
如何将该XML字符串序列化/反序列化为C#对象?<Response>    <Business Number="99696" Name="My business" Address=""  />    <Purchase PurchaseID="7" CustomerID="0" >        <Item Name="item 1" Qty="100" UnitCost="10.0000" />        <Item Name="item2" Qty="200" UnitCost="20.0000" />    </Purchase></Response>谢谢rubenc我认为这是一个不同的问题,因为所有问题通常都涉及一个级别或一个项目列表我的问题是我有不同的水平:<Response>               //root    <Business ... />     //level 1    <Purchase... >       //level 1        <Item ... />     // list我的电话号码,姓名等都为空。到目前为止,这是我尝试过的:    [Serializable, XmlRoot("Response")]    public class Response    {        public Depot depot = new Depot();        // I have tried this also:        //[XmlElement("Number")]        //public string Number { get; set; }        //[XmlElement("Name")]        //public string Name { get; set; }    }    public class Depot    {        [XmlElement("Number")]        public string Number { get; set; }        [XmlElement("Name")]        public string Name { get; set; }    }    static object DeserializeResponse(string responseString)    {        var serializer = new XmlSerializer(typeof(Response));        Response result;        using (var reader = new StringReader(responseString))        {            result = (Response)serializer.Deserialize(reader);        }        return result;    }
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

我找到了解决方案:


public class Response

{

    [System.Xml.Serialization.XmlElementAttribute("Business", typeof(ResponseBusiness), Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]

    public object[] Items { get; set; }

}


public partial class ResponseBusiness

{

    string NumberField;


    string NameField;


    /// <remarks/>

    [System.Xml.Serialization.XmlAttributeAttribute()]

    public string Number

    {

        get

        {

            return this.NumberField;

        }

        set

        {

            this.NumberField = value;

        }

    }

    /// <remarks/>

    [System.Xml.Serialization.XmlAttributeAttribute()]

    public string Name

    {

        get

        {

            return this.NameField;

        }

        set

        {

            this.NameField = value;

        }

    }

我这样称呼XmlSerializer类:


var serializer = new XmlSerializer(typeof(Response), new XmlRootAttribute("Response"));

我可以阅读以下信息:


字符串businessNumber =(((ResponseBusiness)result.Items [0])。Number;


希望它可以帮助别人。


查看完整回答
反对 回复 2021-05-21
  • 1 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信