Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#.net中的XML数据库_C#_.net_Xml - Fatal编程技术网

C#.net中的XML数据库

C#.net中的XML数据库,c#,.net,xml,C#,.net,Xml,我正在为一些网站开发WPF客户端程序。它使用XML数据库。我是XML新手。请有人解释一下如何创建、附加(最重要)、编辑、读取和加密XML文件。我知道这是个大问题。但是,事情很紧急,我们必须尽快完成这项工作。在互联网上搜索,没有得到正确的信息。将您的XML加载为。(回应您对Gerri答案的评论) XML本质上是不可追加的。有效的XML文档需要单个文档元素。为了“附加”,您需要能够返回文档元素的结束标记并覆盖它。唯一的选择是读入整个文档,然后重新写出。此外,您可能希望使用XmlDocument或XD

我正在为一些网站开发WPF客户端程序。它使用XML数据库。我是XML新手。请有人解释一下如何创建、附加(最重要)、编辑、读取和加密XML文件。我知道这是个大问题。但是,事情很紧急,我们必须尽快完成这项工作。在互联网上搜索,没有得到正确的信息。

将您的XML加载为。

(回应您对Gerri答案的评论)

XML本质上是不可追加的。有效的XML文档需要单个文档元素。为了“附加”,您需要能够返回文档元素的结束标记并覆盖它。唯一的选择是读入整个文档,然后重新写出。此外,您可能希望使用XmlDocument或XDocument,而不是XmlWriter,这是一个非常痛苦的API,因为您不需要对行为进行非常细粒度的控制


事实上,XML是一种非常糟糕的数据库格式。还有其他轻量级的数据库解决方案,不需要数据库服务器。

< P>你应该认真考虑在应用程序中使用数据集,并通过XML文件加载数据。完成更新后,使用编写更改

<>但是你也应该认真考虑不要用XML作为数据库。

下面是一篇关于CodeProject的文章,讨论了如何使用XML作为数据库:


我知道你把这个问题标记为C#,但不幸的是,演示应用程序是用VB.NET编写的

假设您的数据库足够小,您可以轻松地将其加载到内存中

创建为数据库建模的类

向它们添加
DataContract
属性,以指示您希望它们如何序列化

使用
DataContractSerializer
将数据库序列化为XML,然后将其保存到磁盘

每次更新数据库时:

  • 将新文件创建为.tmp
  • 删除任何名为.old的旧文件
  • 将.xml重命名为.old
  • 将新文件从.tmp重命名为.xml
  • 加载文件时,如果.xml已损坏或丢失,请尝试.tmp


    这将有助于您在编写过程中避免出现错误时不可避免的损坏。

    由于每个数据库公司都有一个其他公司无法遵循的“标准”接口,XML已成为在数据库之间传输数据的实际方式

    如果这是在预期用途比它是罚款,因为它只需要写在这个格式的一些时间。使用.NET编写XML时有很多问题需要担心,因为它有很多方法忘记完成编写,留下打开的标记(始终使用/flush/close)。警告:处理内核越多.Net出错的频率就越高。如果有四个以上的实际内核,请使用Thread.BeginCriticalRegion()/Thread.EndCriticalRegion()。正如建议的那样,最好将早期版本保存为.bak或类似文件


    当然,如果XML标准可以有一个“文档集”的声明,那么我们每次都可以附加一个文档,这样生活就会简单得多。

    我使用的是WriteStarteElement,writestring和writeendelement用于将用户信息写入xml文件。但我无法附加新的用户信息。您能提供帮助吗?我完全无权将该决定更改为使用xml DB。但是,我以后再也不会选择它了。是否有任何有用的链接可以解释使用数据集的XML操作?不会有任何使用数据集的XML操作。数据从XML文件读入数据集中,一旦进入数据集中,对数据进行数据集操作;数据集不知道也不关心它的数据来自XML。完成后,使用DataSet.WriteXml将数据集写回XML。实际上,“它使用XML数据库”语句表明海报不知道数据库应该做什么。文件无论如何都不是数据库,除非有很多支持。而且——正如您所说——XML是一种非常糟糕的数据库格式;)是的,事实上我只想提到他不应该使用XML的另一个原因。。。大约每一两周,Jing(一个有用的应用程序)就会抱怨它的配置文件被破坏。可能是文件底部的一些垃圾导致文件格式不正确。但是你猜怎么着。。。因为它不是有效的XML,所以它会覆盖整个文件。如果一个40MB的文件中有73%是这样的话,那岂不是太棒了?