2010-08-19 9 views
19

Afortunadamente, esta debería ser una respuesta fácil para alguien (y posiblemente un impostor), pero parece que no puedo resolverlo.Usar XmlSerializer para crear un elemento con atributos y un valor pero no un subelemento

necesito para dar salida a un elemento que tiene este aspecto:

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

sé cómo conseguir esto:

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

con una clase Cantidad que contiene

public int qty;  
[XmlAttribute] 
public string foo; 

[XmlAttribute] 
public string bar; 

pero luego por supuesto, cualquier variable en la que inserte la cantidad se convierte en su propio subelemento.

Por otro lado, si hago la Cantidad una variable en el elemento padre, entonces puedo ajustar el valor y obtener

<Quantity>37</Quantity> 

pero luego no sé cómo conseguir los atributos.

Estaría muy sorprendido si no hubiera una manera simple de hacer esto con XmlSerializer, pero todavía no lo sé. ¿Algunas ideas?

+0

posible duplicado de [XMLSerializer - Control Element-Atributo de emparejamiento (revisado)] (http://stackoverflow.com/questions/732314/xmlserializer-control-element-attribute-pairing-revised) –

Respuesta

47

Encuentro la respuesta aquí: Xmlserializer - Control Element-Attribute Pairing (revised).

He aquí cómo hacerlo: marque la propiedad del valor con el atributo [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 para un título que coincidía con mi búsqueda :) –

+0

respondió su propia pregunta y la mía. – Brandin

+0

Es una pena que la explicación de XmlText no diga nada acerca de que sea adecuado para valores no textuales – user3791372

Cuestiones relacionadas