Генерация XML из класса - PullRequest
2 голосов
/ 27 ноября 2011

Я хочу построить следующий узел XML из класса.

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

Каким должно быть мое определение класса?

class Foo
{
   public string Value {set;get;}
   public string id{set;get;}
}

Я считаю, что я должен добавить некоторые атрибуты XML к этим свойствам, но не уверен, что они есть.

Ответы [ 2 ]

9 голосов
/ 27 ноября 2011

Посмотрите на атрибуты в пространстве имен 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()));
    }
}

Обновление : добавлен код для сериализации типа.

2 голосов
/ 27 ноября 2011

Для C # и Visual Basic нет причин делать это вручную. Visual Studio включает в себя инструмент командной строки, который сгенерирует для вас схему класса или XML. Подробнее см. http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx.

...