2010-01-18 3 views
5

문자열 속성을 사용하여 직렬화/비 직렬화를위한 C# 개체를 만들려고합니다. 속성은 요소를 생성해야하며 속성이 있습니다이름 속성이있는 XML 문자열 요소

예 : 속성이 문자열 인

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

경우에, 나는 코멘트가 객체 인 경우 속성을 추가하는 방법을 볼 수 없습니다 생성되는 이름 및 값 속성 :

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

아이디어가 있으십니까?

답변

6

당신은 타입에 그 2 개 속성을 노출하고 여분의 요소를 생성하지 않도록 지정하기 위해 [XmlText] 속성을 사용해야합니다 : 당신은 개체 자체 위에 해당 속성을 평평하게하려면

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); 
    } 
} 

을 (예를 들어, Customer 인스턴스), 객체 모델을 XmlSerializer이 원하는대로 또는 완전히 별개의 DTO 모델에 맞게 추가 코드가 필요합니다.

관련 문제