我有一个来自外部源的 XML 文档。
<?xml version="1.0" encoding="utf-8"?>
<ns0:Info xmlns:ns0="http://www.ZomboCorp.com/">
<Name>Anthony</Name>
<Job>Developer</Job>
</ns0:Info>
我需要将它反序列化为这样的对象。
public class Info
{
public String Name { get; set; }
public String Job { get; set; }
}
按原样使用 Serializer
抛出 InvalidOperationException
<Info xmlns='http://www.ZomboCorp.com/'>
was not expected.
如果我添加 [XmlElement(Namespace = "http://www.ZomboCorp.com/")]
对于类定义,Serializer
返回一个新的 Info
具有空属性的对象。
最佳答案
您还必须将 XmlElement 属性添加到每个属性,将 Namespace 属性设置为空字符串(因为在您的情况下命名空间不是继承的)。
您对 Info 的定义应如下所示:
XmlRoot(Namespace = "http://www.ZomboCorp.com/")]
public class Info
{
[XmlElement(Namespace = "")]
public String Name { get; set; }
[XmlElement(Namespace = "")]
public String Job { get; set; }
}
然后它将正确反序列化。
关于.net - 如何反序列化带有前缀命名空间但没有 ns 前缀元素的 XML 文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/465825/