2010-09-29 22 views
11

Teniendo en cuenta: -serialización XML especifique XmlElement y XmlAttribute juntos

[XmlRoot("Book")] 
public class Book 
{ 
    [XmlAttribute] 
    public string Title; 

    [XmlElement] 
    public string Publisher; 

    [XmlElement] 
    public string PublisherReference; 
} 

Cuando serializado a XML dará

<Book Title="My Book"> 
    <Publisher>Some Publisher</Publisher> 
    <PublisherReference>XYZ123</PublisherReference> 
</Book> 

¿Cómo podría conseguir PublisherReference como un atributo de Editorial - por ejemplo,

<Book Title="My Book"> 
    <Publisher Reference="XYZ123">Some Publisher</Publisher> 
</Book> 

Respuesta

16
[XmlRoot("Book")] 
public class Book 
{ 
    [XmlAttribute] 
    public string Title; 

    [XmlElement] 
    public Publisher Publisher; 
} 

[Serializable] 
public class Publisher 
{ 
    [XmlText] 
    public string Value; 

    [XmlAttribute] 
    public string Reference; 
} 
+0

AZ me pegaba a la respuesta – azheglov

+0

Gracias - que va a hacerlo, pero ninguna manera de hacerlo sin crear nueva clase - sólo atributos tal vez? No es que quiera engañarme con un palo ni nada ...;) – Ryan

+0

Desafortunadamente no hay forma de hacerlo (hasta donde sé) sin una clase adicional –

Cuestiones relacionadas