将 XML-String 转换为对象

Convert XML-String to an Object

我有一个classOrder

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

现在我的 XML-String 是:

"<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>"

我试图将此字符串转换为 class Order 的对象。 当我 运行 下面的代码时,我得到了一个 Order 类型的对象,但它的所有属性都是 0。 我的错误是什么?

StringReader reader = new StringReader(node.ToString());
XmlSerializer sr = new XmlSerializer(typeof(BaseClasses.Order));
BaseClasses.Order order = (BaseClasses.Order) sr.Deserialize(reader);

您应该使用 XmlElementAttribute 而不是 XmlAttribute

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

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

我在我的项目中做过这样的任务。像这样尝试。

[XmlElement(ElementName = "Counter")]
public int Counter { get; set; }