基于 C# 中的模型类创建 XML 列表

本文关键字:创建 XML 列表 模型 基于 | 更新日期: 2023-09-27 18:36:48

>Hai 我想创建一个具有以下格式的 XML 文件

<myFiles>
<name>myname</name>
<place>myplace</place>
<mydata>
    <today>1-1-2011</today>
    <time>1 PM</time>
    <driving>
       <car>audi</car>
       <bus>volvo</bus>
    </driving>
</mydata>
<mydata>
    <today>1-1-2011</today>
    <time>1 PM</time>
    <driving>
      <car>audi</car>
      <bus>volvo</bus>             
    </driving>
</mydata>
</myFiles>

为了创建这个,我正在使用

class myfile
{
public string name {get;set;}
public string place {get;set;}
public list<mydata> mydata {get;set;}
}

然后也 公共 claa mydata { ...... }我正在使用的XML构建

static public void SerializeToXMLList(List<Movie> movies)
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Movie>));
TextWriter textWriter = new StreamWriter(@"C:'movie.xml");
serializer.Serialize(textWriter, movies);
textWriter.Close();
}

但它会给我这样的输出

<myFiles>
<name>myname</name>
<place>myplace</place>
<mydata>
   <mydata>
   <today>1-1-2011</today>
   <time>1 PM</time>
   <driving>
     <car>audi</car>
     <bus>volvo</bus>
   </driving>
   </mydata>
   <mydata>
   <today>1-1-2011</today>
   <time>1 PM</time>
   <driving>
      <car>audi</car>
      <bus>volvo</bus>
   </driving>
</mydata>
</mydata>
</myFiles>

所以在mydata列表中有很多带有类名的列表

怎样才能避免...,如果有人知道请帮助我..

基于 C# 中的模型类创建 XML 列表

原因是您有一个名为"mydata"的属性,其中的对象类型为"mydata"。

在这样的元素中包含数组实际上是一个很好的做法,所以说实话,我认为你得到的布局更好,尽管你可能应该为属性选择一个更好的名称,例如"mydatacollection"或"mydatalist"。

但是,此处提供了有关可用于控制序列化的属性的详细信息:http://msdn.microsoft.com/en-us/library/2baksw0z%28v=vs.80%29.aspx#Y570

@Totero发布了一个链接,指向有关此主题的另一个好问题,如果您真的想这样做。

它创建嵌套容器的原因是因为你有一个 mydata 对象的数组 mydata。

<mydata>
   <mydata>
   ....
   </mydata>
</mydata>

是表示这一点的正确方式。以您想要的确切格式获取文件的最快方法是将数组重命名为"EraseTag"之类的名称。将 XML 文件作为文本文件打开,并删除 "<EraseTag>" 的所有实例。

但是,我想重申您给出的第二个序列化示例是正确的,因此可以通过反序列化恢复为对象形式。

如果您想将这些标签排除在序列化阶段之外,那么您需要查看以下帖子:

XML 反序列化和松散数组项

并在课程周围添加[Serializable]标签。