我想序列化 xml ,但我有一个问题。有时我有多次相同的标签,但在不同的地方。所以顺序很重要,所以我不能把它放在一个列表中。
例如,我有以下 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>
然后我的对象看起来像这样:
[XmlRoot(ElementName="commands")]
public class Commands {
[XmlElement(ElementName="execute")]
public List<string> Execute { get; set; }
[XmlElement(ElementName="wait")]
public List<int> Wait { get; set; }
}
如果我然后使用以下函数对其进行序列化:
var xmlSerializer = new XmlSerializer(obj.GetType());
using (var writer = new Utf8StringWriter())
{
xmlSerializer.Serialize(writer, obj);
return writer.ToString();
}
顺序将不一样......它将首先序列化执行标签,然后是等待语句。虽然顺序很重要。
有人知道如何解决这个问题吗?
附言。更改 xml 不是解决方案,因为我对此很感兴趣....
提前致谢!
回答1
经过一段时间的搜索,我解决了以下问题。等待和执行基本上是我现在序列化命令列表的命令。当然,序列化器会抱怨它不能序列化它,因为它是一个接口列表(ICommand),所以我实现了 IXmlSerliazer 以便我告诉如何序列化它。
这实际上工作得很好