2010-08-19 6 views
19

Hoffentlich sollte dies eine einfache Antwort für jemanden da draußen sein (und möglicherweise ein Betrogener), aber ich kann nicht scheinen, es herauszufinden.Verwenden von XmlSerializer zum Erstellen eines Elements mit Attributen und einem Wert, aber kein Unterelement

Ich brauche ein Element Ausgabe, die wie folgt aussieht:

<Quantity foo="AB" bar="CD">37</Quantity> 

Ich weiß, wie diese bekommen:

<Quantity foo="AB" bar="CD"> 
    <qty>37</qty> 
    </Quantity> 

mit einer Menge Klasse

public int qty;  
[XmlAttribute] 
public string foo; 

[XmlAttribute] 
public string bar; 

enthalten, aber dann Natürlich wird die Variable, in die ich die Quantität einfüge, zu ihrem eigenen Unterelement.

Auf der anderen Seite, wenn ich die Menge eine Variable im übergeordneten Elemente zu machen, dann kann ich den Wert gesetzt und

<Quantity>37</Quantity> 

bekommen, aber dann weiß ich nicht, wie die Attribute zu erhalten.

Ich wäre sehr überrascht, wenn es keine einfache Möglichkeit gäbe, dies mit XmlSerializer zu tun, aber ich weiß es noch nicht. Irgendwelche Ideen?

+0

möglich Duplikat [XMLSerializer - Kontrollelement-Attribut Pairing (überarbeitet)] (http://stackoverflow.com/questions/732314/xmlserializer-control-element-attribute-pairing-revised) –

Antwort

47

Ich finde die Antwort hier: Xmlserializer - Control Element-Attribute Pairing (revised).

So wird's gemacht: Markieren Sie die Eigenschaft value mit dem Attribut [XmlText].

public class Quantity { 
    // your attributes 
    [XmlAttribute] 
    public string foo; 

    [XmlAttribute] 
    public string bar; 

    // and the element value (without a child element) 
    [XmlText] 
    public int qty; 

} 
+0

+1 für ein titel, der zu meiner suche passte :) –

+0

du hast deine eigene frage genauso beantwortet wie meine. – Brandin

+0

Es ist eine Schande, dass die Erklärung für XmlText nichts darüber aussagt, dass es für nicht-textuelle Werte geeignet ist. – user3791372

Verwandte Themen