2011-11-26 2 views
2

클래스에서 다음 XML 노드를 작성하려고합니다.클래스에서 XML 생성

<Foo id="bar">some value</Foo> 

클래스 정의는 어떻게해야합니까?

나는이 속성에 XML 속성을 추가해야하지만 확실하지는 않습니다.

답변

9

System.Xml.Serialization 네임 스페이스 아래의 특성을 살펴보십시오. 귀하의 경우 클래스는 아래 코드와 유사해야합니다.

public class StackOverflow_8281703 
{ 
    [XmlType(Namespace = "")] 
    public class Foo 
    { 
     [XmlText] 
     public string Value { set; get; } 
     [XmlAttribute] 
     public string id { set; get; } 
    } 
    public static void Test() 
    { 
     MemoryStream ms = new MemoryStream(); 
     XmlSerializer xs = new XmlSerializer(typeof(Foo)); 
     Foo foo = new Foo { id = "bar", Value = "some value" }; 
     xs.Serialize(ms, foo); 
     Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray())); 
    } 
} 

업데이트는 : 유형을 직렬화하는 코드를 추가했다.

+0

ok 그리고 값을 할당 한 후에이 클래스에서 XML을 생성하려면 어떻게해야합니까? – DarthVader

+1

예를 들어 답을 편집했습니다. 이를 위해'XmlSerializer' 클래스를 사용할 것입니다. – carlosfigueira

+0

감사합니다. 이것이 XML을 생성하는 효율적인 방법입니까? 더 나은/빠른 방법으로 연구해야합니까? – DarthVader

2

C# 및 Visual Basic의 경우 수동으로 수행 할 이유가 없습니다. Visual Studio에는 클래스 또는 xml 스키마를 생성하는 명령 줄 도구가 포함되어 있습니다. 자세한 내용은 http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx을 참조하십시오.

+0

정말요? 손으로 직접하는 대신 존재하는 도구를 사용하는 것이 좋습니다. –

+0

동의합니다 - 이유는 무엇입니까? 그리고 더 설명하자면 왜 투표를하지 않을까요? 그건 도움이되거나 예의 바뀌지 않습니다. 잘 정의 된 스키마로 작업하는 경우 (그리고 그렇지 않은 경우 왜 그렇게하지 않는가? 매우 단순한 경우를 제외하고는 매우 유용합니다) 다음은 위대한 도구입니다. 코드와 스키마를 수동으로 업데이트하는 것보다 한 곳에서 스키마를 업데이트하고 코드를 다시 생성 해 보겠습니다. –

+0

이 도구는 정말 좋습니다. 나는 또한 downvoting 이유를 이해할 수 없다, 그래서 나는 upvote 준 : – dasheddot