2016-02-17 33 views
0

我有麻煩反序列化我的XML數據到我定義的數據結構。我沒有在創建XML的任何控制,但它的結構類似:C#XmlSerializer:反序列化子元素文本值

<order id="123456"> 
    <userid>555</userid> 
    <merchant id="111">SomeMerchant</merchant> 
</order> 

我到達頂級屬性和簡單的元素值好,但畢竟是給我發出的部分是分配子元素的值賦予子類中的屬性。我的數據結構類似於:

public class OrderData 
{ 
    [XmlElement("merchant", typeof(OrderMerchant))] 
    public OrderMerchant Merchant { get; set; } 

    [XmlAttribute("id")] 
    public int OrderID { get; set; } 
} 

[Serializable] 
public class OrderMerchant 
{ 
    [XmlElement("merchant")] 
    public string Name { get; set; } 

    [XmlAttribute("id")] 
    public int ID { get; set; } 
} 

我的問題:當我反序列化XML,並得到一個對象,我有111的ID,但空名稱商戶對象。如何標記我的對象,以便將元素文本分配給Name屬性?我嘗試使用元素名稱,我試過了一個XPath表達式(但我甚至不知道在這種情況下是否允許)。

回答

1

您正在告訴序列化器序列化一個元素商家,然後商人對象期望接收另一個元素「商人」,它將包含該名稱。相反,標記與屬性的名稱屬性[XMLTEXT]像這樣:

[Serializable] 
public class OrderMerchant 
{ 
    [XmlText] 
    public string Name { get; set; } 

    [XmlAttribute("id")] 
    public int ID { get; set; } 
} 

而且應該這樣做

Source

+0

權......這就是爲什麼我想某種XPath表達式來獲取當前元素/根... XmlText完全正確!謝謝......我的不好找不到原來的(我看過)。 –

相關問題