简体   繁体   中英

Serialization xml with double xml tags where order is important in c#

I want to serialize xml which works but I have a problem. Sometimes I have the same tag multiple times but on different places. So the order is important so I cant just stick it in an list.

For example I have the following xml:

<?xml version="1.0" encoding="utf-16"?>
<commands>
    <execute>some statement</execute>
    <wait>5</wait>
    <execute>some statement</execute>
    <wait>5</wait>
    <execute>some statement</execute>
    <execute>some statement</execute>
</commands>

Then my object would look something like this:

[XmlRoot(ElementName="commands")]
public class Commands { 

    [XmlElement(ElementName="execute")] 
    public List<string> Execute { get; set; } 

    [XmlElement(ElementName="wait")] 
    public List<int> Wait { get; set; } 
}

If I then serialize it with the following function:

var xmlSerializer = new XmlSerializer(obj.GetType());

using (var writer = new Utf8StringWriter())
{
  xmlSerializer.Serialize(writer, obj);
  return writer.ToString();
}

The order will not be the same.... It would first serialize the execute tags and then the wait statements. While the order is important.

Does someone have a clue on how to tackle this problem?

Ps. changing the xml is not a solution as I'm tied to that....

Thanks in advance!

After searching for a while I tackle the problem as the following. The wait and execute are basically commands to I serialize now a list of commands. Of course the seriliazer will complain that it can't serlize this because it is a list of interfaces (ICommand) so I implemented the IXmlSerliazer so that I tell how to serliaze this.

This worked actually quite good

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM