2009-03-28 2 views
1

zu haben, wenn ichWie ein Attribut auf ein Element des Typs string

[XmlElement(ElementName = "Title")] 
public string Title; 

haben Wie kann ich ein Attribut in Titel umfassen, ohne eine Klasse zu deklarieren (seine Art nur eine Zeichenfolge ist) ?? so dass, wenn ich XML Serializer Serialisierung verwenden, die Ausgabe so etwas wie diese:

<Movie> 
    <Title x:uid="movie_001">Armagedon</Title> 
    <Date>010101</Date> 
<Movie> 

und das nicht mag:

<Movie> 
    <Title x:uid="movie_001" MovieTile="Armagedon"\> 
    <Date>010101</Date> 
<Movie> 

Antwort

1

Ich glaube nicht, das möglich ist, ohne Titel ein Brauch sein, die Typisierung oder explizite Implementierung von Serialisierungsmethoden.

Sie könnten wie so eine benutzerdefinierte Klasse tun ..

class MovieTitle 
{ 
    [XmlText] 
    public string Title { get; set; } 
    [XmlAttribute(Namespace="http://www.myxmlnamespace.com")] 
    public string uid { get; set; } 
    public override ToString() { return Title; } 
} 

[XmlElement(ElementName = "Title")] 
public MovieTitle Title; 

, die produzieren sollte:

<Title x:uid="movie_001">Armagedon</Title> 

interessante Dinge Obwohl die Serializer tun mit unbekannten Namensräume können.

Sie können die wierd Verhalten vermeiden, indem Sie Ihre Namensräume deklarieren und das Objekt an den Serializer Bereitstellung ..

XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); 
    ns.Add("x", "http://www.myxmlnamespace.com");