【发布时间】:2017-05-30 11:52:00
【问题描述】:
我在尝试将 XML 反序列化为对象时遇到问题。我的 XML 看起来像:
<?xml version="1.0" encoding="utf-16"?>
<Products
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<AllProducts>
<Product>
<ID>8</ID>
<GID>51280</GID>
<Kod>RNIKAKC1.6</Kod>
<Name>SB-800</Name>
<Ean>0018208048014</Ean>
<CommodityGroup>
<ID>86</ID>
<Name>AKCESORIA FOTO</Name>
<Path>
<Category>
<ID>60798</ID>
<Name>ARCHIWALNE</Name>
</Category>
</Path>
</CommodityGroup>
</Product>
....
Next products
...
我的方法代码:
var MemoryStream = APIAccess.DownloadFileToStream("example.xml", "exampleContainer");
using (MemoryStream)
{
MemoryStream.Position = 0;
using (StreamReader StreamReader = new StreamReader(MemoryStream))
{
XmlSerializer serializer = new XmlSerializer(typeof(CommodityGroup));
var products = serializer.Deserialize(StreamReader);
}
}
方法 DownloadFileToStream 运行良好,因为它在其他类中很有用。
我收到错误:
InvalidOperationException: Products xmlns='' 不是预期的。
我想创建一个 Node CommodityGroup 的对象。我创建了选择此节点的类,将其复制并粘贴到新类中,例如 Paste Special -> XML
这个类的属性如下:
[Serializable()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[XmlTypeAttribute(AnonymousType = true)]
[XmlRootAttribute(Namespace = "CommodityGroup", IsNullable = false)]
我不知道如何修复它。当我添加到 XML Serializer 参数 new XmlRootAttribute("Products") 中时,我得到了“0”值。
你有什么建议吗?
【问题讨论】:
-
删除命名空间,它应该可以工作。查看stackoverflow.com/questions/2615892/…了解更多信息。
-
我无法更改 xml 文件
-
您是否手动将
Namespace = "CommodityGroup"添加到生成的类中?为什么?提交的 xml 不包含此命名空间。 -
是的,自动生成了`Namespace = ""`。只是想尽一切办法解决这个问题
标签: c# .net xml serialization