2010-01-18 10 views
5

Tôi đang cố gắng tạo đối tượng C# cho tuần tự hóa/deserialization với thuộc tính chuỗi. Khu nghỉ dưỡng cần phải tạo ra một yếu tố và cũng có một thuộc tính:Phần tử chuỗi C# XML có thuộc tính Tên

ví dụ:

... 
<Comment Name="CommentName"></Comment> 
... 

Nếu tài sản là một chuỗi, tôi không thể nhìn thấy cách thêm thuộc tính, và nếu những nhận xét là một đối tượng với các thuộc tính Tên và Giá trị mà nó tạo ra:

... 
<Comment Name="CommentName"> 
    <Value>comment value</Value> 
</Comment> 
... 

Bất kỳ ý tưởng nào?

Trả lời

6

Bạn sẽ cần phải tiếp xúc với những người có 2 khách sạn trên một loại và sử dụng thuộc tính [XmlText] để chỉ ra rằng nó không nên tạo ra một yếu tố bổ sung:

using System; 
using System.Xml.Serialization; 
public class Comment 
{ 
    [XmlAttribute] 
    public string Name { get; set; } 
    [XmlText] 
    public string Value { get; set; } 
} 
public class Customer 
{ 
    public int Id { get; set; } 
    public Comment Comment { get; set; } 
} 
static class Program 
{ 
    static void Main() 
    { 
     Customer cust = new Customer { Id = 1234, 
      Comment = new Comment { Name = "abc", Value = "def"}}; 
     new XmlSerializer(cust.GetType()).Serialize(
      Console.Out, cust); 
    } 
} 

Nếu bạn muốn flatten những thuộc tính vào đối tượng chính nó (ví dụ Customer trong ví dụ của tôi), bạn sẽ cần thêm mã để làm cho mô hình đối tượng giả vờ để phù hợp với những gì XmlSerializer muốn hoặc một mô hình DTO hoàn toàn riêng biệt.