Using XmlSerializer to create an element with attributes and a value but no sub-element
Hopefully this should be an easy answer for someone out there (and possibly a dupe), but I can't seem to figure it out.
I need to output an element that looks like this:
<Quantity foo="AB" bar="CD">37</Quantity>
I know how to get this:
<Quantity foo="AB" bar="CD">
<qty>37</qty>
</Quantity>
with a Quantity class containing
public int qty;
[XmlAttribute]
public string foo;
[XmlAttribute]
public string bar;
but then of course whatever variable I insert the quantity into becomes its own sub-element.
On the other hand, if I make the Quantity a variable in the parent element, then I can set the value and get
<Quantity>37</Quantity>
开发者_运维百科
but then I don't know how to get the attributes.
I would be very surprised if there weren't a simple way to do this with XmlSerializer, but I don't know it yet. Any ideas?
I find the answer here: Xmlserializer - Control Element-Attribute Pairing (revised).
Here is how to do it: mark the value property with the [XmlText]
attribute.
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;
}
精彩评论