2009-10-09 28 views
5

Tôi chỉ đang thực hiện các thao tác hoàn thiện cho trình gỡ lỗi Zthes format (System.Xml.Serialization) sử dụng không gian tên "dc" trong phần tử "thes". Tất cả các phần tử "term" đều deserializing vì chúng không có namespace nhưng tôi không thể tìm ra cách để nói với deserializer rằng các phần tử "thes" có một không gian tên.Làm cách nào để deserialize các không gian tên XML trong C# (System.Xml.Serialization)?

Đây là những gì tôi đang cố gắng làm (không hoạt động) vì vậy hy vọng ai đó có thể cung cấp cho tôi cú pháp thích hợp.

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

Trả lời

8

Đây là một mẫu nhanh chóng cho bạn ...

[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> 
      */ 
     } 
    } 
} 
+0

Đoạn mã này thực sự đã giúp. Cảm ơn Matthew. – Junto

+0

Vui vì tôi có thể giúp! –

+0

Câu hỏi của OP là về giải tuần tự hóa, không phải tuần tự hóa. Phương thức deserialize không nhận tham số XmlSerializerNamespaces. –

1
[XmlElement("someElement", Namespace="namespace")] 
public string SomeElement; 

Phụ Lục: Hãy chắc chắn rằng "namespace" là đầy đủ các URI của không gian tên, không chỉ là tiền tố.

Các vấn đề liên quan