如何向XML序列化添加类独立标记

时间:2013-12-07 20:39:09

标签: c# xml datagridview xmlserializer

我正在开发一个sprite版本工具,通过点击spritesheet中的精灵来填充DataGridView,其中包含该精灵的id,位置和大小,然后按一个按钮将这些行导出到XML文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfModule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Module>
    <ID>0</ID>
    <posx>247</posx>
    <posy>87</posy>
    <width>36</width>
    <height>72</height>
  </Module>
  <Module>
    <ID>1</ID>
    <posx>197</posx>
    <posy>87</posy>
    <width>32</width>
    <height>70</height>
  </Module>
</ArrayOfModule>

我正在使用XmlSerializer。我实现了具有这5个属性的类型模块列表。问题是我想添加一个新标签,它不是模块类的属性,表示用于精灵表的图像,所以我可以同时导入这些模块和图像。我希望我的XML像这样:

<?xml version="1.0" encoding="utf-8"?>
<Image>C:\sprite_sheet.png</Image>
<ArrayOfModule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Module>
    <ID>0</ID>
    <posx>247</posx>
    <posy>87</posy>
    <width>36</width>
    <height>72</height>
  </Module>
</ArrayOfModule>

我怎样才能做到这一点? 我可以使用XmlSerializer执行此操作还是需要其他功能?

1 个答案:

答案 0 :(得分:0)

您必须创建一个包装类:

public class AllInfo
{
    public string Image {get;set;}
    public Module[] Modules {get;set;}
}

当您将此类的实例传递给序列化程序时,它将序列化两条信息。