.net - 在 .NET 中反序列化期间如何指定 XML 序列化属性以支持命名空间前缀?

标签 .net xml xml-serialization xml-namespaces

我有以下 XML:

<person xmlns:a="http://example.com" xmlns:b="http://sample.net">
    <a:fName>John</a:fName>
    <a:lName>Wayne</a:lName>
    <b:age>37</b:age>
</person>

如何在类上定义 XML 序列化属性以支持所描述的场景?

最佳答案

您需要使用 XmlElement 的命名空间来指明每个字段需要哪些命名空间属性。这将允许您将字段与特定命名空间相关联,但您还需要在返回类型 XmlNamespaceDeclarations 的类上公开一个属性。以获得前缀关联。

请参阅下面的文档和示例:

[XmlRoot(ElementName = "person")]
public class Person
{
    [XmlElement(Namespace = "http://example.com")]
    public string fname;

    [XmlElement(Namespace = "http://sample.com")]
    public string lname;

    [XmlNamespaceDeclarations]
    public XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces();

    public Person()
    {
        xmlns.Add("a", "http://example.com");
        xmlns.Add("b", "http://sample.com");
    }
}

关于.net - 在 .NET 中反序列化期间如何指定 XML 序列化属性以支持命名空间前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1254544/

相关文章:

java - Android Studio 数组值到 TextView

.net - 为什么 Windows Azure 共享缓存如此慢?

c# - .NET 3.5 和 4.5 中 LINQ 查询结果的差异

java - 使用 Spring-Data-Rest 以 XML 而不是 JSON 的形式返回响应

用于 XML 模式操作的 Java API

c# - MSMQ为什么不发送空格字符?

c# - 确定类型是否为静态

c# - DllImport 如何识别最新的 .dll 版本?

c# - XMLSerializer 为什么要取基类的 DefaultValue 属性来序列化

C# XML Serializer 不会存储属性