繁体   English   中英

如何在将 xml 反序列化为 c# ZA8CFDE63811BD59EB266AC96 时获得单个 xml 元素的多个值?

[英]How do I get multiple value of single xml element while deserializing xml to c# object?

我从 xml 文件中获取 xml 数据到 c# ZA8CFDE6331BD59EB2AC96F8911ZB4 如下所示:

Xml:

<OrderItem>
          <OrderItemCode>1234</OrderItemCode>
          <ASIN>dfsdfcs</ASIN>
          <SKU>5MJ1L3</SKU>
          <ItemStatus>Unshipped</ItemStatus>
          <ProductName>xcv/ProductName>
          <Quantity>1</Quantity>
          <ItemPrice>
             <Component>
                        <Type>Principal</Type>
                        <Amount currency="CAD">7.99</Amount>
             </Component>
          </ItemPrice>
</OrderItem>

c# Model:

[XmlRootAttribute("OrderItem")]
public class OrderItem
    {
        [XmlElement("OrderItemCode")]
        public string OrderItemCode { get; set; }

        [XmlElement("ASIN")]
        public string Asin { get; set; }

        [XmlElement("SKU")]
        public string Sku { get; set; }

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

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

        [XmlElement("Quantity")]
        public long Quantity { get; set; }

        [XmlElement("ItemPrice")]
        public ItemPrice Item_Price { get; set; }

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

        [XmlElement("Promotion")]
        public Promotion Promotion { get; set; }

    }

    public partial class ItemPrice
    {
        [XmlElementAttribute("Component")]
        public List<Component> Component { get; set; }
    }

    public partial class Component
    {
        [XmlElement("Type")]
        public string Type { get; set; }

        [XmlElement("Amount")]
        public Amount Amount { get; set; }
    }

    public partial class Amount
    {
        [XmlAttribute("currency")]
        public string Currencies { get; set; }

        [XmlAttribute("#text")]
        public string Price { get; set; }
    }

反序列化:

 XmlSerializer serializer = new XmlSerializer(typeof(OrderItem));
 TextReader reader = new StreamReader(reportPath);
 OrderItem ordersListXML = (OrderItem)serializer.Deserialize(reader);

在这里,我想通过反序列化为 c# object 来获取<Amount currency="CAD">7.99</Amount>的值,并且我能够获取元素<Amount currency="CAD">7.99</Amount>的属性“货币”的值<Amount currency="CAD">7.99</Amount>到“Currencies”属性,但在反序列化后无法在我的 c# object 中获取元素<Amount currency="CAD">7.99</Amount>到“Price”属性的文本“7.99”。

任何人都可以帮助我获得价值!

XmlTextAttribute ( [XmlText] ) 允许将条目的值反序列化为字段。 所以

<Amount currency="CAD">7.99</Amount>

可反序列化为 class

public class Amount
{
    [XmlAttribute("currency")]
    public string Currencies { get; set; }

    [XmlText]
    public string Price { get; set; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM