2012-02-29 9 views
19

używam C# i XmlSerializer serializować następujące klasy:Serializować klasy C# XML z atrybutami i jedną wartość dla klasy

public class Title 
{ 
    [XmlAttribute("id")] 
    public int Id { get; set; } 

    public string Value { get; set; } 
} 

chciałbym to do serializacji w formacie XML:

<Title id="123">Some Title Value</Title> 

Innymi słowy, chciałbym, aby właściwość Value była wartością elementu Title w pliku XML. Nie mogę znaleźć sposobu, aby to zrobić bez implementacji własnego serializatora XML, którego chciałbym uniknąć. Każda pomoc będzie doceniona.

Odpowiedz

37

Spróbuj użyć [XmlText]:

public class Title 
{ 
    [XmlAttribute("id")] 
    public int Id { get; set; } 

    [XmlText] 
    public string Value { get; set; } 
} 

Oto co mam (ale nie spędzają dużo czasu szczypanie XmlWriter, więc masz sporo hałasu na drodze nazw, itd .:

<?xml version="1.0" encoding="utf-16"?> 
<Title xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     id="123" 
     >Grand Poobah</Title> 
+0

Wiedziałem, że musi być coś prostego, czego mi brakowało. Działa jak wdzięk, dzięki. –

5

prawdopodobnie?

using System; 
using System.IO; 
using System.Text; 
using System.Xml.Serialization; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var title = new Title() { Id = 3, Value = "something" }; 
      var serializer = new XmlSerializer(typeof(Title)); 
      var stream = new MemoryStream(); 
      serializer.Serialize(stream, title); 
      stream.Flush(); 
      Console.Write(new string(Encoding.UTF8.GetChars(stream.GetBuffer()))); 
      Console.ReadLine(); 
     } 
    } 

    public class Title 
    { 
     [XmlAttribute("id")] 
     public int Id { get; set; } 
     [XmlText] 
     public string Value { get; set; } 
    } 

} 
Powiązane problemy