复杂的XML反序列化 [英] Complex XML deserialization

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

问题描述

我试图反序列化一个复杂的XML文件。我有我的主类结构使得它得到全部在第一个孩子节点信息的,我甚至有它,这样我可以得到 CLIENTNAME 这是深两层。但是,任何超出这似乎并没有工作。我得到一个列表项为1的计数,但没有信息列表中。



我的 OrderTaxes OrderTransactions 列表回来了计数= 1 ,但所有字段为空。



我敢肯定这是我的同班同学有问题。结构和朝向修正,这将是非常赞赏的任何帮助。



下面是XML:

 <&的OrderDetail GT; 
< MessageTypeCode> 82540< / MessageTypeCode>
< OrderDetailId> 59339463< / OrderDetailId>
<&ClientInfo客户端GT;
<&CLIENTNAME GT; LenderName会出现此处< / CLIENTNAME>
< / ClientInfo客户端>
< OrderTaxes>
< OrderTax>
< TaxId> 9202225< / TaxId>
< / OrderTax>
< / OrderTaxes>
< OrderTransactions>
< OrderTransaction>
< LoanAmount />
<标题>
< TitleVendors>
< TitleVendor>
< VendorInstructions方式>等等等等等等等等< / VendorInstructions>
< VendorServices>
< TitleVendorService>
< TitleVendorServiceId> 6615159< / TitleVendorServiceId>
< ServiceCode> 1OWNER< / ServiceCode>
< CustomVendorInstructions>等等等等等等等等等等< / CustomVendorInstructions>
< / TitleVendorService>
< / VendorServices>
< / TitleVendor>
< / TitleVendors>
< /标题>
< / OrderTransaction>
< / OrderTransactions>
< /&的OrderDetail GT;

和这里是类:

 命名空间TSIxmlParser 
{
[XmlRoot(的OrderDetail)]
公共类OrderData
{
[的XmlElement(MessageTypeCode )
公共字符串MessageTypeCode {搞定;组; }

[的XmlElement(OrderDetailId)]
公共字符串ORDERNUMBER {搞定;组; }

[的XmlElement(ClientInfo客户端)]
公开名单<&ClientInfo客户端GT; ClientInfos =新的List<&ClientInfo客户端GT;();

[XmlArray(OrderTaxes)]
[XmlArrayItem(OrderTax)]
公开名单< OrderTax> OrderTaxes =新的List< OrderTax>();

[XmlArray(OrderTransactions)]
[XmlArrayItem(OrderTransaction)]
公开名单< OrderTransaction> OrderTransactions =新的List< OrderTransaction>();
}

公共类ClientInfo客户端
{
[的XmlElement(CLIENTNAME)]
公共字符串CLIENTNAME {搞定;组; }
}

公共类OrderTax
{
[的XmlElement(TaxId)]
公共字符串TaxId {搞定;组; }
}

公共类OrderTransaction
{
[的XmlElement(LoanAmount)]
公共字符串LoanAmount {搞定;组; }

[XmlArray(标题)]
[XmlArrayItem(TitleVendors)]
公开名单<标题>标题{搞定;组; }
}

公共类标题
{
[XmlArrayItem(TitleVendors)]
公开名单< TitleVendors> TitleVendors {搞定;组; }
}

公共类TitleVendors
{
[XmlArray(TitleVendor)]
公开名单< TitleVendor> TitleVendor {搞定;组; }
}

公共类TitleVendor
{
[的XmlElement(VendorInstructions)]
公共字符串VendorInstructions {搞定;组; }

[XmlArray(VendorServices)]
[XmlArrayItem(TitleVendorService)]
公开名单< TitleVendorService> VendorServices {搞定;组; }
}

公共类TitleVendorService
{
[的XmlElement(TitleVendorServiceId)]
公共字符串TitleVendorServiceId {搞定;组; }
[的XmlElement(ServiceCode)]
公共字符串ServiceCode {搞定;组; }
[的XmlElement(CustomVendorInstructions)]
公共字符串CustomVendorInstructions {搞定;组; }
}
}


解决方案

好吧,我不知道,如果你想这个(反序列化的XML的原始转储):

  {
MessageTypeCode:82540 ,
OrderDetailId:59339463,
ClientInfo客户端:
{
CLIENTNAME:LenderName会出现在这里
},
OrderTaxes:
{
OrderTax:
{
TaxId:9202225
}
},
OrderTransactions:
{
OrderTransaction:
{
LoanAmount:{}
标题:
{
TitleVendors:
{
TitleVendor:
{
VendorInstructions:等等等等等等等等。,
VendorServices:
{
TitleVendorService:
{
TitleVendorServiceId:6615159,
ServiceCode:1OWNER,
CustomVendorInstructions:等等等等等等等等等等
}
}
}
}
}
}
}
}

所以基本上我只是用编辑 - >粘贴特殊 - >粘贴XML作为类

  ///<言论/> 
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
[ System.Xml.Serialization.XmlRootAttribute(命名空间=,ISNULLABLE = FALSE)]
公共部分类的OrderDetail
{

私人UINT messageTypeCodeField;

私人UINT orderDetailIdField;

私人OrderDetailClientInfo clientInfoField;

私人OrderDetailOrderTaxes orderTaxesField;

私人OrderDetailOrderTransactions orderTransactionsField;

///<言论/>
公共UINT MessageTypeCode
{
得到
{
返回this.messageTypeCodeField;
}

{
this.messageTypeCodeField =价值;
}
}

///<言论/>
公共UINT OrderDetailId
{
得到
{
返回this.orderDetailIdField;
}

{
this.orderDetailIdField =价值;
}
}

///<言论/>
公共OrderDetailClientInfo ClientInfo客户端
{
得到
{
返回this.clientInfoField;
}

{
this.clientInfoField =价值;
}
}

///<言论/>
公共OrderDetailOrderTaxes OrderTaxes
{
得到
{
返回this.orderTaxesField;
}

{
this.orderTaxesField =价值;
}
}

///<言论/>
公共OrderDetailOrderTransactions OrderTransactions
{
得到
{
返回this.orderTransactionsField;
}

{
this.orderTransactionsField =价值;
}
}
}

///<言论/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
公部分类OrderDetailClientInfo
{

私人字符串clientNameField;

///<言论/>
公共字符串CLIENTNAME
{
得到
{
返回this.clientNameField;
}

{
this.clientNameField =价值;
}
}
}

///<言论/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
公部分类OrderDetailOrderTaxes
{

私人OrderDetailOrderTaxesOrderTax orderTaxField;

///<言论/>
公共OrderDetailOrderTaxesOrderTax OrderTax
{
得到
{
返回this.orderTaxField;
}

{
this.orderTaxField =价值;
}
}
}

///<言论/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
公部分类OrderDetailOrderTaxesOrderTax
{

私人UINT taxIdField;

///<言论/>
公共UINT TaxId
{
得到
{
返回this.taxIdField;
}

{
this.taxIdField =价值;
}
}
}

///<言论/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
公部分类OrderDetailOrderTransactions
{

私人OrderDetailOrderTransactionsOrderTransaction orderTransactionField;

///<言论/>
公共OrderDetailOrderTransactionsOrderTransaction OrderTransaction
{
得到
{
返回this.orderTransactionField;
}

{
this.orderTransactionField =价值;
}
}
}

///<言论/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
公部分类OrderDetailOrderTransactionsOrderTransaction
{

私有对象loanAmountField;

私人OrderDetailOrderTransactionsOrderTransactionTitle titleField;

///<言论/>
公共对象LoanAmount
{
得到
{
返回this.loanAmountField;
}

{
this.loanAmountField =价值;
}
}

///<言论/>
公共OrderDetailOrderTransactionsOrderTransactionTitle标题
{
得到
{
返回this.titleField;
}

{
this.titleField =价值;
}
}
}

///<言论/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
公部分类OrderDetailOrderTransactionsOrderTransactionTitle
{

私人OrderDetailOrderTransactionsOrderTransactionTitleTitleVendors titleVendorsField;

///<言论/>
公共OrderDetailOrderTransactionsOrderTransactionTitleTitleVendors TitleVendors
{
得到
{
返回this.titleVendorsField;
}

{
this.titleVendorsField =价值;
}
}
}

///<言论/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
公部分类OrderDetailOrderTransactionsOrderTransactionTitleTitleVendors
{

私人OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendor titleVendorField;

///<言论/>
公共OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendor TitleVendor
{
得到
{
返回this.titleVendorField;
}

{
this.titleVendorField =价值;
}
}
}

///<言论/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
公部分类OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendor
{

私人字符串vendorInstructionsField;

私人OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServices vendorServicesField;

///<言论/>
公共字符串VendorInstructions
{
得到
{
返回this.vendorInstructionsField;
}

{
this.vendorInstructionsField =价值;
}
}

///<言论/>
公共OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServices VendorServices
{
得到
{
返回this.vendorServicesField;
}

{
this.vendorServicesField =价值;
}
}
}

///<言论/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
公部分类OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServices
{

私人OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServicesTitleVendorService titleVendorServiceField;

///<言论/>
公共OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServicesTitleVendorService TitleVendorService
{
得到
{
返回this.titleVendorServiceField;
}

{
this.titleVendorServiceField =价值;
}
}
}

///<言论/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute(准则)]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真)]
公部分类OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServicesTitleVendorService
{

私人UINT titleVendorServiceIdField;

私人字符串serviceCodeField;

私人字符串customVendorInstructionsField;

///<言论/>
公共UINT TitleVendorServiceId
{
得到
{
返回this.titleVendorServiceIdField;
}

{
this.titleVendorServiceIdField =价值;
}
}

///<言论/>
公共字符串ServiceCode
{
得到
{
返回this.serviceCodeField;
}

{
this.serviceCodeField =价值;
}
}

///<言论/>
公共字符串CustomVendorInstructions
{
得到
{
返回this.customVendorInstructionsField;
}

{
this.customVendorInstructionsField =价值;
}
}
}



使用的所有代码:

  VAR的xmlString = @ 
<的OrderDetail>
< MessageTypeCode> 82540< / MessageTypeCode>
< OrderDetailId> 59339463< / OrderDetailId>
< ClientInfo客户端>
< CLIENTNAME> LenderName会出现此处< / CLIENTNAME>
< / ClientInfo客户端>
< OrderTaxes>
< OrderTax>
< TaxId> 9202225< / TaxId>
< / OrderTax>
< / OrderTaxes>
< OrderTransactions>
< OrderTransaction>
< LoanAmount />
<标题>
< TitleVendors>
< TitleVendor>
< VendorInstructions>等等。等等等等等等< / VendorInstructions>
< VendorServices>
< TitleVendorService>
< TitleVendorServiceId> 6615159< / TitleVendorServiceId>
< ServiceCode> 1OWNER< / ServiceCode>
< CustomVendorInstructions>等等等等等等等等等等< / CustomVendorInstructions>
< / TitleVendorService>
< / VendorServices>
< / TitleVendor>
< / TitleVendors>
< /标题>
< / OrderTransaction>
< / OrderTransactions>
< /&的OrderDetail GT;;

VAR XML =新的OrderDetail();

System.Xml.Serialization.XmlSerializer串=新的
系统.Xml.Serialization.XmlSerializer(typeof运算(的OrderDetail));使用

(XmlReader中读取= XmlReader.Create(新StringReader(的xmlString))){
XML =(的OrderDetail)serializer.Deserialize (读卡器);
}

VAR xmlDump = xml.Dump();


I'm trying to deserialize a complex XML file. i have my main class structured so it gets all of the info in the first child nodes, I even have it so that i can obtain the ClientName which is two layers deep. However, anything beyond that does not seem to work. I get a List item with a count of 1 but no information is inside the list.

My OrderTaxes and OrderTransactions lists come back with a Count = 1 but all of the fields are null.

I'm positive it is a problem with my class structure and any help towards correcting this would be very appreciated.

Here is the XML:

<OrderDetail>
    <MessageTypeCode>82540</MessageTypeCode>
    <OrderDetailId>59339463</OrderDetailId>
    <ClientInfo>
        <ClientName>LenderName will appear here</ClientName>
    </ClientInfo>
    <OrderTaxes>
        <OrderTax>
            <TaxId>9202225</TaxId>
        </OrderTax>
    </OrderTaxes>
    <OrderTransactions>
        <OrderTransaction>
            <LoanAmount/>
            <Title>
                <TitleVendors>
                    <TitleVendor>
                        <VendorInstructions>blah blah blah blah .</VendorInstructions>
                        <VendorServices>
                            <TitleVendorService>
                                <TitleVendorServiceId>6615159</TitleVendorServiceId>
                                <ServiceCode>1OWNER</ServiceCode>
                                <CustomVendorInstructions>blah blah blah blah blah </CustomVendorInstructions>
                            </TitleVendorService>
                        </VendorServices>
                    </TitleVendor>
                </TitleVendors>
            </Title>
        </OrderTransaction>
    </OrderTransactions>
</OrderDetail>

And here is the class:

namespace TSIxmlParser
{
    [XmlRoot("OrderDetail")]
    public class OrderData
    {
        [XmlElement("MessageTypeCode")]
        public string MessageTypeCode { get; set; }

        [XmlElement("OrderDetailId")]
        public string OrderNumber { get; set; }

        [XmlElement("ClientInfo")]
        public List<ClientInfo> ClientInfos = new List<ClientInfo>();

        [XmlArray("OrderTaxes")]
        [XmlArrayItem("OrderTax")]
        public List<OrderTax> OrderTaxes = new List<OrderTax>();

        [XmlArray("OrderTransactions")]
        [XmlArrayItem("OrderTransaction")]
        public List<OrderTransaction> OrderTransactions = new List<OrderTransaction>();
    }

    public class ClientInfo
    {
        [XmlElement("ClientName")]
        public string ClientName { get; set; }
    }

    public class OrderTax
    {
        [XmlElement("TaxId")]
        public string TaxId { get; set; }
    }

    public class OrderTransaction
    {
        [XmlElement("LoanAmount")]
        public string LoanAmount { get; set; }

        [XmlArray("Title")]
        [XmlArrayItem("TitleVendors")]
        public List<Title> Titles { get; set; }
    }

    public class Title
    {       
        [XmlArrayItem("TitleVendors")]        
        public List<TitleVendors> TitleVendors { get; set; }
    }

    public class TitleVendors
    {
        [XmlArray("TitleVendor")]
        public List<TitleVendor> TitleVendor { get; set; } 
    }

    public class TitleVendor
    {
        [XmlElement("VendorInstructions")]
        public string VendorInstructions { get; set; }

        [XmlArray("VendorServices")]
        [XmlArrayItem("TitleVendorService")]
        public List<TitleVendorService> VendorServices { get; set; }
    }

    public class TitleVendorService
    {
        [XmlElement("TitleVendorServiceId")]
        public string TitleVendorServiceId { get; set; }
        [XmlElement("ServiceCode")]
        public string ServiceCode { get; set; }
        [XmlElement("CustomVendorInstructions")]
        public string CustomVendorInstructions { get; set; }
    }
}

解决方案

Well, I am not sure if you wanted this (raw dump of deserialized XML):

{
    MessageTypeCode: 82540,
    OrderDetailId: 59339463,
    ClientInfo: 
    {
        ClientName: LenderName will appear here
    },
    OrderTaxes: 
    {
        OrderTax: 
        {
            TaxId: 9202225
        }
    },
    OrderTransactions: 
    {
        OrderTransaction: 
        {
            LoanAmount: {},
            Title: 
            {
                TitleVendors: 
                {
                    TitleVendor: 
                    {
                        VendorInstructions: blah blah blah blah .,
                        VendorServices: 
                        {
                            TitleVendorService: 
                            {
                                TitleVendorServiceId: 6615159,
                                ServiceCode: 1OWNER,
                                CustomVendorInstructions: blah blah blah blah blah 
                            }
                        }
                    }
                }
            }
        }
    }
}

So basically I just used Edit -> Paste special -> Paste XML as Classes:

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class OrderDetail
{

    private uint messageTypeCodeField;

    private uint orderDetailIdField;

    private OrderDetailClientInfo clientInfoField;

    private OrderDetailOrderTaxes orderTaxesField;

    private OrderDetailOrderTransactions orderTransactionsField;

    /// <remarks/>
    public uint MessageTypeCode
    {
        get
        {
            return this.messageTypeCodeField;
        }
        set
        {
            this.messageTypeCodeField = value;
        }
    }

    /// <remarks/>
    public uint OrderDetailId
    {
        get
        {
            return this.orderDetailIdField;
        }
        set
        {
            this.orderDetailIdField = value;
        }
    }

    /// <remarks/>
    public OrderDetailClientInfo ClientInfo
    {
        get
        {
            return this.clientInfoField;
        }
        set
        {
            this.clientInfoField = value;
        }
    }

    /// <remarks/>
    public OrderDetailOrderTaxes OrderTaxes
    {
        get
        {
            return this.orderTaxesField;
        }
        set
        {
            this.orderTaxesField = value;
        }
    }

    /// <remarks/>
    public OrderDetailOrderTransactions OrderTransactions
    {
        get
        {
            return this.orderTransactionsField;
        }
        set
        {
            this.orderTransactionsField = value;
        }
    }
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class OrderDetailClientInfo
{

    private string clientNameField;

    /// <remarks/>
    public string ClientName
    {
        get
        {
            return this.clientNameField;
        }
        set
        {
            this.clientNameField = value;
        }
    }
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class OrderDetailOrderTaxes
{

    private OrderDetailOrderTaxesOrderTax orderTaxField;

    /// <remarks/>
    public OrderDetailOrderTaxesOrderTax OrderTax
    {
        get
        {
            return this.orderTaxField;
        }
        set
        {
            this.orderTaxField = value;
        }
    }
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class OrderDetailOrderTaxesOrderTax
{

    private uint taxIdField;

    /// <remarks/>
    public uint TaxId
    {
        get
        {
            return this.taxIdField;
        }
        set
        {
            this.taxIdField = value;
        }
    }
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class OrderDetailOrderTransactions
{

    private OrderDetailOrderTransactionsOrderTransaction orderTransactionField;

    /// <remarks/>
    public OrderDetailOrderTransactionsOrderTransaction OrderTransaction
    {
        get
        {
            return this.orderTransactionField;
        }
        set
        {
            this.orderTransactionField = value;
        }
    }
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class OrderDetailOrderTransactionsOrderTransaction
{

    private object loanAmountField;

    private OrderDetailOrderTransactionsOrderTransactionTitle titleField;

    /// <remarks/>
    public object LoanAmount
    {
        get
        {
            return this.loanAmountField;
        }
        set
        {
            this.loanAmountField = value;
        }
    }

    /// <remarks/>
    public OrderDetailOrderTransactionsOrderTransactionTitle Title
    {
        get
        {
            return this.titleField;
        }
        set
        {
            this.titleField = value;
        }
    }
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class OrderDetailOrderTransactionsOrderTransactionTitle
{

    private OrderDetailOrderTransactionsOrderTransactionTitleTitleVendors titleVendorsField;

    /// <remarks/>
    public OrderDetailOrderTransactionsOrderTransactionTitleTitleVendors TitleVendors
    {
        get
        {
            return this.titleVendorsField;
        }
        set
        {
            this.titleVendorsField = value;
        }
    }
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class OrderDetailOrderTransactionsOrderTransactionTitleTitleVendors
{

    private OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendor titleVendorField;

    /// <remarks/>
    public OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendor TitleVendor
    {
        get
        {
            return this.titleVendorField;
        }
        set
        {
            this.titleVendorField = value;
        }
    }
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendor
{

    private string vendorInstructionsField;

    private OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServices vendorServicesField;

    /// <remarks/>
    public string VendorInstructions
    {
        get
        {
            return this.vendorInstructionsField;
        }
        set
        {
            this.vendorInstructionsField = value;
        }
    }

    /// <remarks/>
    public OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServices VendorServices
    {
        get
        {
            return this.vendorServicesField;
        }
        set
        {
            this.vendorServicesField = value;
        }
    }
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServices
{

    private OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServicesTitleVendorService titleVendorServiceField;

    /// <remarks/>
    public OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServicesTitleVendorService TitleVendorService
    {
        get
        {
            return this.titleVendorServiceField;
        }
        set
        {
            this.titleVendorServiceField = value;
        }
    }
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class OrderDetailOrderTransactionsOrderTransactionTitleTitleVendorsTitleVendorVendorServicesTitleVendorService
{

    private uint titleVendorServiceIdField;

    private string serviceCodeField;

    private string customVendorInstructionsField;

    /// <remarks/>
    public uint TitleVendorServiceId
    {
        get
        {
            return this.titleVendorServiceIdField;
        }
        set
        {
            this.titleVendorServiceIdField = value;
        }
    }

    /// <remarks/>
    public string ServiceCode
    {
        get
        {
            return this.serviceCodeField;
        }
        set
        {
            this.serviceCodeField = value;
        }
    }

    /// <remarks/>
    public string CustomVendorInstructions
    {
        get
        {
            return this.customVendorInstructionsField;
        }
        set
        {
            this.customVendorInstructionsField = value;
        }
    }
}

All code used:

var xmlString = @
"<OrderDetail>
    <MessageTypeCode>82540</MessageTypeCode>
    <OrderDetailId>59339463</OrderDetailId>
    <ClientInfo>
        <ClientName>LenderName will appear here</ClientName>
    </ClientInfo>
    <OrderTaxes>
        <OrderTax>
            <TaxId>9202225</TaxId>
        </OrderTax>
    </OrderTaxes>
    <OrderTransactions>
        <OrderTransaction>
            <LoanAmount/>
            <Title>
                <TitleVendors>
                    <TitleVendor>
                        <VendorInstructions>blah blah blah blah .</VendorInstructions>
                        <VendorServices>
                            <TitleVendorService>
                                <TitleVendorServiceId>6615159</TitleVendorServiceId>
                                <ServiceCode>1OWNER</ServiceCode>
                                <CustomVendorInstructions>blah blah blah blah blah </CustomVendorInstructions>
                            </TitleVendorService>
                        </VendorServices>
                    </TitleVendor>
                </TitleVendors>
            </Title>
        </OrderTransaction>
    </OrderTransactions>
</OrderDetail>";

var xml = new OrderDetail();

System.Xml.Serialization.XmlSerializer serializer = new
System.Xml.Serialization.XmlSerializer(typeof(OrderDetail));

using(XmlReader reader = XmlReader.Create(new StringReader(xmlString))) {
    xml = (OrderDetail) serializer.Deserialize(reader);
}

var xmlDump = xml.Dump();

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

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