3

我正在尝试学习如何使用 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。

4

1 回答 1

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;
    }
}
于 2013-03-09T00:43:48.903 回答