The following DataContract:
[DataContract(Namespace = "http://namespace", Name = "Blarg")]
public class Blarg
{
[XmlAttribute("Attribute")]
public string Attribute{ get; set; }
[DataMember(Name = "Record", IsRequired = false, Order = 4)]
public List<Record> Record{ get; set; }
}
Serializes into this:
<Blarg Attribute="blah">
<Record>
<Record/>
<Record/>
<Record/>
</Record>
</Blarg>
But I want this:
<Blarg>
<Record/>
<Record/>
<Record/>
<Blarg/>
The DataContractSerializer seems to be inserting the header parent automagicall开发者_如何学JAVAy and I don't want it.
How do I go about removing the wrapping <Record>
?
I don't think you can do that.
The DataContractSerializer
is optimized for speed, and in the process it sacrifices some flexibility and some features (like XML attributes). I don't think you have much chance to influence the DCS - it does its job as it sees fit, and as quickly as possible. You get to define quite neatly what to serialize (with the [DataMember]
attribute, but you don't really have a say in how to serialize.
If you need more control, you could pick the XmlSerializer
instead - in that case, you have 10-15% slower serialization, but you can control things like the shape of the data etc. But even in this case - I am not aware of any way you can tell the XML serializer to serialize a collection into a series of XML tags without an enclosing tag for the collection.
I found the answer here. See the short story bellow(for the long one checkout the url):
[XmlElement ("Parameter")]
public List<Parameter> Parameters;
精彩评论