将XML字符串转换为对象

问题描述 投票:0回答:2

我有一个班级顺序。

[Serializable()]
    [XmlRoot("Order")]
    public class Order
    {
        [XmlAttribute("Counter")]
        public int Counter { get; set; }
        [XmlAttribute("Conveyer")]
        public int Conveyer { get; set; }
    }

现在我的XML字符串是:

"<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Counter>3</Counter>
  <Conveyer>1</Conveyer>
</Order>"

我试图将此String转换为类顺序的对象。当我运行下面的代码时,我得到一个Order类型的Object,但我的所有属性均为0。我的错是什么?

StringReader reader = new StringReader(node.ToString());
            XmlSerializer sr = new XmlSerializer(typeof(BaseClasses.Order));
            BaseClasses.Order order = (BaseClasses.Order) sr.Deserialize(reader);
c# .net xml linq-to-xml
2个回答
1
投票

您应该使用XmlElementAttribute代替XmlAttribute

[XmlElementAttribute("Counter")]
public int Counter { get; set; }
[XmlElementAttribute("Conveyer")]
public int Conveyer { get; set; }

这将有助于正确地反序列化。

enter image description here


0
投票

我在项目中完成了这样的任务。尝试这样。

[XmlElement(ElementName = "Counter")]
public int Counter { get; set; }
© www.soinside.com 2019 - 2024. All rights reserved.