如何将数据行写入 xml 文件

本文关键字:xml 文件 数据 | 更新日期: 2023-09-27 17:47:23

这是故事。我正在做一个程序,每次程序关闭时,用户创建的所有数据(文件链接)都会丢失,因此每当用户重新打开程序时,他都必须再次执行所有工作。

所以我决定使用 xml 文件来存储数据,因为 dbms 加载时间太长,并且处理纯文本文件的代码很难维护。

数据主要由存储两个文件路径的链接组成,一个用于源,一个用于目标,一个布尔值表示程序关闭前链接的状态,以及其他一些不太重要的东西。

当程序加载时,应读取数据,恢复应用程序的先前状态。

所以我做了一个这样的xml文件:

...
  <Directories>
    <Directory id="0">
      <FilePath>C:'Test1</FilePath>
      <PathSeparator>'</PathSeparator>
    </Directory>
...

并使用数据集来获取数据。

Directory getDirectory()
{
    ds = new DataSet();
                ds.ReadXml(xmlPath);
    DataRow[] myRow = ds.Tables["Directory"].
                Select("id ="+id.ToString());// "id = id"
    string temp = myRow[0]["FilePath"].ToString();
    Directory result = new Directory();
    result.path = temp;
    temp = myRow[0]["PathSeparator"].ToString();
    result.pathSeparator = temp[0];
    return result;
}

所有这些都很好,但后来我尝试向 xml 添加新的"行":

public static int addDirectory(DataSet ds, char pathSeparator, string path)
{
    DataRow myRow = ds.Tables["Directory"].NewRow();
    myRow.ItemArray[0] = 8;
    myRow.ItemArray[1] = path;
    myRow.ItemArray[2] = pathSeparator.ToString();
    myRow.ItemArray[3] = "lol";
    ds.Tables["Directory"].Rows.Add(myRow);
    ds.AcceptChanges();
    ds.WriteXml(ApplicationDataManager.xmlPath);
    return 8;
}

但所有这些写信都是在.xml上的一个随机位置

我做错了什么?

顺便说一句,如果有人对我应该如何存储这些数据有任何建议,我会很高兴听到(阅读)。

提前感谢!

[更新]文件链接用于在两个目录之间创建连接,以便可以同步它们。

如何将数据行写入 xml 文件

如果 LINQ 在您的工具箱中,我强烈建议使用它来读/写 xml,而不是数据表。 它更加流畅和直观,您可以控制节点的去向...... 无论将它们添加到集合的哪个位置,它们都会显示在生成的 XML 中。

这是一个快速介绍,如果你搜索一下,网络上有大量关于它的信息:http://www.hookedonlinq.com/LINQtoXML5MinuteOverview.ashx

如果你想要一个快速而肮脏的方法,你最好的选择是将用户信息加载到数据集中,调用"WriteXml"方法来保存并使用"ReadXml"将其拉回去。 数据集单独使用的 XML 格式将以相同的格式传入和传出。

您还有许多其他选项,但数据集是最快速和最肮脏的方法。