需要一些项目建议

时间:2012-05-14 13:10:53

标签: c# xml

我将把项目任务作为C#编程课程的最后一部分,我选择了一个媒体库来存储DVD电影馆藏的信息。我需要一些建议是关于如何保存这些信息,因为任务应该通过使用简单的文本文件而不是更好的数据库来解决。

所以,这是保存这些信息的最佳方式,以便能够添加,编辑和允许搜索标题和演员,还可以在类型之后进行排序,以提及我为此计划提供的一些内容。

我是否应该只保存信息,只需在文件末尾添加每个电影lika的标题,年份,播放时间,导演,演员1,演员2,演员3,流派,成绩,评论?我可以在文件中搜索,还是应该以某种方式首先将其全部读入数组,然后再进行搜索并编辑并再次保存完整的文件?

或者使用这样的XML更好:

<movie_collections>
<movie>
<title=Tron Legacy"></title>
<year=2010></year>
<playtime=120></playtime>
etc.
</movie>
</movie_collections>

如果我使用XML,我可以搜索标题并加载或编辑该部分吗?有没有比这些更好的选择?

4 个答案:

答案 0 :(得分:3)

您可以将数据存储在XML文件中。 XML文件可以存储类似于数据库表的数据。您可以添加多个记录,分层数据等...您可以使用 LINQ to XML 轻松查询数据。

如果您不想使用LINQ to XML,您可以使用如此典型的XMLDocument来处理XML数据。

答案 1 :(得分:3)

也许你的水平太低了。该文件实际上只是为了持久而不是将您自己的数据库实现为文件。

只需实现您所追求的对象并将其序列化为imo。

public class MovieCollections
{
    private ICollection<Movie> Movies {get; set;}
    // etc...
}

public class Movie
{
    public string Title {get; private set;}
    public int PlayTime {get; private set;}
    public DateTime ReleaseDate {get; private set;}
}

序列化MovieCollections的实例。 将MovieCollections保留为Singleton实例,因为您只需要一个集合。

答案 2 :(得分:1)

顺便说一下,这似乎是一个非常普遍的问题&amp;一个相当常见的家庭作业问题!!

我认为你应该谷歌这样做,你会得到更好的项目创意。

这方面有类似的东西:

1。Simple Movie Database in C# using Microsoft Access
2. Create a Movie Database Application
3. imdbapi
&安培;终于
4. SO's similar post

就数据库和数据库之间的比较而言XML是值得关注的,我确实建议你使用数据库,因为考虑到这种类型的项目,有几个关于XML的专业人员。

答案 3 :(得分:1)

正如@M_Affifi建议的那样,通过驻留在内存中的对象来考虑与数据的所有交互(例如排序,添加,查找,删除,更新等)(例如,MovieCollections类的实例和XML类的实例一样,XML文件仅用于存储对象的状态,因此下次运行应用程序时可以使用该数据。

完成操作数据后,只需将其序列化为XML即可。序列化只是将对象转换为可以存储或传输的格式的过程,在这种情况下将转换为XML。看一下this reference,您的序列化需求非常基础,所以您只需要几行代码。

System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(YourObject.GetType());
      x.Serialize(Console.Out, YourObject)

最后,我建议考虑一下你的应用程序逻辑。当程序启动时,您可能想要检查您的Movies.xml是否存在,如果存在,然后“反序列化”它,这意味着将它从XML加载到您的对象集合。如果XML文件不存在,则只需开始操作对象,完成后再选择Save(Serialize)。如果需要,我可以帮助进行序列化/反序列化过程。

希望这有帮助 ;