如果我试图覆盖单个标记,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上将文件权限设置为"允许所有"。
我开始觉得有人在清空你的文件。XmlDocument的Load((方法确实将流作为参数。也许可以对文件使用FileStream,并将其FileShare设置为None。这样,就不会有人能够覆盖你的文件。
请记住,在读取/写入(加载/保存(XML 之前,必须将streams Position属性设置为0