2009-08-10 22 views
25

Tôi đã một XML sau:Làm cách nào để xác định các thuộc tính tuần tự hóa XML để hỗ trợ tiền tố không gian tên trong quá trình deserialization trong .NET?

<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> 

Làm thế nào để xác định serialization XML thuộc tính trên một lớp học để hỗ trợ mô tả kịch bản?

Trả lời

54

Bạn cần chỉ định không gian tên nào mà mỗi trường yêu cầu bằng cách sử dụng không gian tên thuộc tính XmlElement. Điều này sẽ cho phép bạn liên kết một trường với một không gian tên cụ thể, nhưng bạn cũng sẽ cần để lộ một thuộc tính trên lớp của bạn trả về loại XmlNamespaceDeclarations để có được liên kết tiền tố.

Xem tài liệu hướng dẫn và mẫu dưới đây:

[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"); 
     } 
    } 
+0

Vậy là xong, cảm ơn! –

+1

Một lưu ý cho những người khác, có vẻ như điều XmlSerializerNamespaces không cần thiết nếu bạn chỉ làm deserialization, mặc dù tôi vẫn sẽ coi nó là một thực hành tốt anyway. –

+1

huyền thoại Tôi đã tìm kiếm lứa tuổi cho điều này! – jcvandan

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