【发布时间】:2015-04-25 01:35:52
【问题描述】:
我需要将 XML 中的多个字段保存到不同的数组中。 这就是我的 XML 的样子:
<Content>
<Colours>
<Colour name="Strong Red">
<R>255</R>
<G>0</G>
<B>0</B>
<A>255</A>
</Colour>
</Colours>
<Textures>
<Texture name="Character01">
<Path>Path/Folder</Path>
</Texture>
</Textures>
</Content>
当<Colours> 是我的根并且我只将颜色添加到一个数组中时,现在一切正常。
现在我想通过同一个 XML 文件添加纹理,然后再添加更多,从而将根移到 <Content>。
这就是我的 ColourLoader 类的样子,只有颜色,<Colour> 是我的 XML 的根:
[Serializable()]
[XmlRoot("Colours")]
public class ColourLoader
{
[XmlElement("Colour")]
public CustomColour[] Colours;
public static ColourLoader Load(string path)
{
var serializer = new XmlSerializer(typeof(ColourLoader));
using (var stream = new FileStream(path, FileMode.Open))
{
return serializer.Deserialize(stream) as ColourLoader;
}
}
}
我的 CustomColour 类工作正常,它使用 [XmlElement("R")] 等从 XML 读取值。只是我不知道如何从嵌套的 XML 中读取元素。
我必须以某种方式跳过<Content> 并从<Colours> 添加颜色作为root 并为<Textures> 等做同样的事情。
我不想创建多个 XML 文件,因为我想将所有内容管理到一个位置,并且只加载一次 XML 文件。
【问题讨论】:
-
创建一个
Content类并向其添加属性Colours。 -
您是否打算从同一个 XML 文档中加载单独的
*Loader类(ColourLoader、TextureLoader等)? -
目前就是这样设置的,是的。我宁愿将内容加载分组到一个类中,但这是我第一次使用 Xml。现在的设置方式可以说是各种尝试的结果。
-
R、G、B、A已经成熟,可以成为 Xml 属性而不是元素。
标签: c# arrays xml object serialization