我正在raspberry pi上运行一个C#应用程序,在该应用程序中,我在启动时读取一次xml文件,然后每次使用以下代码更改该文件:
using System.Xml;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(settingsFileName);
第一次(在启动时)它总是有效的,但是当文件更改时,我总是得到这个异常:
Unhandled exception. System.Xml.XmlException: Root element is missing.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
at System.Xml.XmlDocument.Load(XmlReader reader)
at System.Xml.XmlDocument.Load(String filename)
配置文件如下所示:
<config>
<data1 seconds = "5000"></data1>
<data2 check = "16:00"></data2>
<data3 max = "50"></data3>
</config>
当然,我只更改数据,而不是根元素"config“。
是什么导致了这一切?
编辑:
将<?xml version="1.0"?>
放在文件的顶部有一点改进,现在只有在我第二次更改文件时才会出现错误。
没有更改文件的代码,但是有检查文件最后保存时间的代码,如果与最初的保存时间不同,则再次读取xml文件。我使用winscp的默认编辑器对xml文件进行了实际更改(因为我使用SSH访问pi)。
dotnet --version 3.1.425
发布于 2022-12-04 13:49:57
你可以这样用
将文件内容加载到变量xml
中
并粘贴在代码下面。
using (StringReader reader = new StringReader(xml))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(reader);
}
https://stackoverflow.com/questions/74675865
复制相似问题