基于 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列表中有很多带有类名的列表
我怎样才能避免...,如果有人知道请帮助我..
原因是您有一个名为"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]
标签。