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

标签 .net xml xml-serialization xml-namespaces

我有一个来自外部源的 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/

相关文章:

c# - 多维数组中的重复次数

c# - 使用印度编号系统的逗号分隔符格式化数字字符串

android - android水平均匀地放置空间按钮

xml - XSD : How to use ENTITY in XSD

c# - 是哪种设计模式?无法识别

java - 通过网络推送 JAX-B 对象

c# - 具有 IXmlSerializable 的自定义类因 OutOfMemoryException 而失败

c# - 如何将对象序列化为xml?

c# - 将 XML 传递给 Web 服务的最佳方法?

c# - 错误原因 CS0161 : not all code paths return a value