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

我只是对我的Zthes格式反序列化器(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()); /*   Hello  */ } } } 
 [XmlElement("someElement", Namespace="namespace")] public string SomeElement; 

附录:确保“namespace”是命名空间的完整URI,而不仅仅是前缀。