XML 一个 class 在另一个 class 中的序列化

XML serialization of a class in another class

这些是我目前正在使用的 classes。

public class Monster
{
    [XmlAttribute("name")]
    public string Name;
    public int Mana;
    public int Health;
    public List<Drop> Drops;    
}
public class Drop
{
    public string DropInfo;
}

这是XML:

<Monster name="TestMonster1">
  <Health>5</Health>
  <Mana>2</Mana>
  <Drops>
    <Drop>124 20 40</Drop>
    <Drop>140 15 25</Drop>
    <Drop>155 10 15</Drop>
  </Drops>
</Monster>

我想要做的是将 XML 中的每个 <Drop> 添加到下拉列表中。我尝试了 XmlArray、XmlArrayItem 和 XmlElement 的不同组合,但其中 none 有效。

现在 Drop class 只有一个字符串,但随着我需要处理该字符串,它还会有更多字符串,这就是为什么 List<Drop> 不仅仅是一个字符串数组。

可以吗?我唯一能做的就是让列表有 3 个正确的项目,但字符串总是空的。

您在 DropInfo 中缺少 [XmlText]。如果没有它,C# 不知道将文本粘贴在 <Drop> 标签中的什么位置:

public class Drop
{
    [XmlText]
    public string DropInfo;
}

尝试使用

    public class Monster
    {
        [XmlAttribute("name")]
        public string Name;
        public int Mana;
        public int Health;
        [XmlArray("Drops")]
        [XmlArrayItem("Drop")]
        public List<Drop> Drops;
    }

    public class Drop
    {
        [XmlText]
        public string DropInfo;
    }
}

看到它在我的 .NET 中工作 Fiddle:https://dotnetfiddle.net/HzvVkI