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

Rya*_*all 5 c# xml serialization namespaces

我只是对我的Zthes格式反序列化器(System.Xml.Serialization)进行最后润色,它使用元素"thes"中的命名空间"dc".所有"term"元素都是反序列化的,因为它们没有命名空间,但我无法弄清楚如何告诉反序列化器"thes"元素有一个命名空间.

这是我想要做的事情(这是行不通的)所以希望有人可以给我正确的语法.

[XmlElement("namespace:someElement")]
public string SomeElement;
Run Code Online (Sandbox Code Playgroud)

Mat*_*ted 8

这是给你的快速样品......

[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>
             */
        }
    }
}
Run Code Online (Sandbox Code Playgroud)