问题是样本中的XML文件。元素的名称以XML名称空间为前缀,这会导致序列化程序不会将它们映射到OrderedItem
类型的原始字段。如果您删除XML文件中的名称空间,则此示例将正确运行。
另外,您可以装点OrderedItem
类型包含在simple.xml文件中使用
public class OrderedItem
{
[XmlElement(Namespace = "http://www.cpandl.com")]
public string ItemName;
[XmlElement(Namespace = "http://www.cpandl.com")]
public string Description;
[XmlElement(Namespace = "http://www.cohowinery.com")]
public decimal UnitPrice;
[XmlElement(Namespace = "http://www.cpandl.com")]
public int Quantity;
[XmlElement(Namespace = "http://www.cohowinery.com")]
public decimal LineTotal;
// A custom method used to calculate price per item.
public void Calculate()
{
LineTotal = UnitPrice * Quantity;
}
}
哦XML命名空间的正确的命名空间,所以有用的,但有时... ...那么令人讨厌。 – 2013-03-09 00:46:58
@ ta.speot.is非常讨厌。 :-P – 2013-03-09 00:55:25
谢谢,JaredPar。你建议的两种方法都像你说的那样工作。我不应该假定MSDN示例代码应该按原样工作。我认为这更可能是我的设置。 – 2013-03-09 02:23:19