c# - 如何在 C# (System.Xml.Serialization) 中反序列化 XML 命名空间?

标签 c# xml serialization namespaces

我只是对我的 Zthes format 做最后的润色反序列化器(System.Xml.Serialization)在元素“thes”中使用命名空间“dc”。所有“term”元素都可以很好地反序列化,因为它们没有命名空间,但我不知道如何告诉反序列化器“thes”元素有一个命名空间。

这是我正在尝试做的事情(它不起作用)所以希望有人能给我正确的语法。

[XmlElement("namespace:someElement")]
public string SomeElement;

最佳答案

这是给您的快速示例...

[XmlRoot("myObject")]
public class MyObject
{
    [XmlElement("myProp", Namespace = "http://www.whited.us")]
    public string MyProp { get; set; }

    [XmlAttribute("myOther", Namespace = "http://www.whited.us")]
    public string MyOther { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        var xnames = new XmlSerializerNamespaces();
        xnames.Add("w", "http://www.whited.us");
        var xser = new XmlSerializer(typeof(MyObject));
        using (var ms = new MemoryStream())
        {
            var myObj = new MyObject()
            {
                MyProp = "Hello",
                MyOther = "World"
            };
            xser.Serialize(ms, myObj, xnames);
            var res = Encoding.ASCII.GetString(ms.ToArray());
            /*
                <?xml version="1.0"?>
                <myObject xmlns:w="http://www.whited.us" w:myOther="World">
                  <w:myProp>Hello</w:myProp>
                </myObject>
             */
        }
    }
}

关于c# - 如何在 C# (System.Xml.Serialization) 中反序列化 XML 命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1544869/

相关文章:

c# - 禁用 DropDownList razor mvc

sql-server - SQL Server 无法从 XML 字符串解析 CDATA

java - 为什么jaxb会生成这样的代码?

java - 抑制 JAXB ArrayList 中的空字符串元素

C# 对象二进制序列化

c# - Xmlserializer 不序列化基类成员

python - 将枚举成员序列化为 JSON

c# - 在 C# 中使用 Using 的不同方式

c# - 有没有一种方法可以编写代码契约来确保只有一种方法可以修改特定字段?

C# 属性委托(delegate)?