如果我试图覆盖单个标记,XML将覆盖整个文件

本文关键字:覆盖 XML 文件 单个标 如果 | 更新日期: 2023-09-27 17:50:48

我有一个可安装的.NET应用程序,它通过定期检查远程服务器上的更新来打印票证。应用程序需要发送当前app_id和last_called(time(,以获取自上次调用应用程序以来的更新。

这是存储设置的XML。

<?xml version="1.0" encoding="utf-8"?>
 <PrinterSettings>
      <Printer>
        <Printer1></Printer1>
      </Printer>
      <last_called></last_called>
      <app_id></app_id>
 <PrinterSettings>

应用程序每隔几秒钟运行一次作业,然后用最新的last_called(时间(更新XML,代码如下:

var xe1 = new XmlDocument();
xe1.Load("Xmlfilepath");
xe1.SelectSingleNode("/PrinterSettings/last_called").InnerText = sale_modified_time;
xe1.Save("Xmlfilepath");

虽然应用程序在第一天左右似乎运行良好,但它经常被清空为一个空白文档,并且应用程序无法进一步运行。

我该怎么解决这个问题?

另一个注意事项是,为了运行应用程序,我在windows上将文件权限设置为"允许所有"。

如果我试图覆盖单个标记,XML将覆盖整个文件

我开始觉得有人在清空你的文件。XmlDocument的Load((方法确实将流作为参数。也许可以对文件使用FileStream,并将其FileShare设置为None。这样,就不会有人能够覆盖你的文件。

请记住,在读取/写入(加载/保存(XML 之前,必须将streams Position属性设置为0