如何反序列化带有前缀命名空间但没有 ns 前缀元素的 XML 文档?

2023-12-06

我有一个来自外部源的 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/'>没想到。

如果我添加[XmlElement(Namespace = "http://www.ZomboCorp.com/")]对于类的定义,Serializer返回一个新的Info具有 null 属性的对象。


您还必须向每个属性添加 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; }
}

然后它将正确反序列化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何反序列化带有前缀命名空间但没有 ns 前缀元素的 XML 文档? 的相关文章

随机推荐