c# - Serialization xml 带有双 xml 标签,其中顺序在 c# 中很重要

我想序列化 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 以便我告诉如何序列化它。

这实际上工作得很好

相似文章

随机推荐

最新文章