当应用程序恢复时,我试图在C#WinRt应用程序中读取XML文件:
Windows.Storage.StorageFile File = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync("PreviousSession.xml");
if (File != null)
{
var File2 = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync("PreviousSession.xml");
string Document = File2.ToString();
System.Xml.Linq.XDocument.Parse(Document);
}
但我得到System.Xml.XmlException
:
Data at the root level is invalid. Line 1, position 1.
如何解决此问题并正确阅读文件?
我的XML文档正在构建如下:
Windows.Data.Xml.Dom.XmlDocument Document = new Windows.Data.Xml.Dom.XmlDocument();
Windows.Data.Xml.Dom.XmlElement Element = (Windows.Data.Xml.Dom.XmlElement)Document.AppendChild(Document.CreateElement("PreviousSessionData"));
...
Windows.Storage.IStorageFile TempFile = await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync("PreviousSession.xml", Windows.Storage.CreationCollisionOption.ReplaceExisting);
await Document.SaveToFileAsync(TempFile);
对于这样的文件:
<PreviousSessionData>...</PreviousSessionData>
答案 0 :(得分:1)
System.Xml.Linq.XDocument.Parse
expects an XML string,而不是XML文件名。
这段代码错了(见评论):
string Document = File2.ToString(); // Return the name of "File2" object, not File2 content!
System.Xml.Linq.XDocument.Parse(Document); // Parse error, trying to parse the string "PreviousSession.xml" !
你想要的是把文件的内容放在一个字符串中:
string Document = File.ReadAllLines(File2);
System.Xml.Linq.XDocument.Parse(Document);
或者您可以使用XDocument.Load
expects a file path,而不是字符串。