来自MSDN的XmlSerializer示例失败

时间:2013-03-09 00:38:43

标签: c# xml serialization xmlserializer

我正在尝试学习如何使用XMLSerializer。我使用示例代码创建了一个VS2010项目:http://msdn.microsoft.com/en-us/library/tz8csy73(v=vs.100).aspx

代码应该将简单的XML文档反序列化为简单的C#对象。它编译并运行时没有错误,但无法恢复C#对象。所有字段都保持为0或null。

我有示例要求的.NET Framework 4.0。我在最后一个Console.Write上放了一个断点,可以看到所有值都是0或null。

1 个答案:

答案 0 :(得分:4)

问题是示例中的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;
    }
}