【发布时间】:2016-07-08 01:41:00
【问题描述】:
我正在尝试使用 Linq 将一些更改保存回 XML 文件,我在 SO 和教程网站上看到了很多这样的示例,但由于某种原因,我在 xmlDoc.Save(customerXMLPath); 上遇到错误。 参数 1:无法从 'string' 转换为 'System.IO.Stream'。
我看到的大多数示例都是 ASP.Net 示例,但我认为这不会对语法产生太大影响(这是一个 UWP 应用程序)。有人可以告诉我我做错了什么吗?
private void SaveChange_Click(object sender, RoutedEventArgs e)
{
string customerXMLPath =
Path.Combine(Package.Current.InstalledLocation.Path, "XML/Customers.xml");
XDocument xmlDoc = XDocument.Load(customerXMLPath);
var updateQuery = from r in xmlDoc.Descendants("Customer")
where r.Element("CustomerId").Value == txtCustomerId.Text
select r;
foreach (var query in updateQuery)
{
query.Element("State").SetValue(txtState.Text);
}
xmlDoc.Save(customerXMLPath);
}
编辑:根据 cmets,UWP 中的 Save 没有过载。那么这是否意味着(基于另一条评论)我必须保存为流?如果是这种情况,我是否不必覆盖文件?
我的假设是有一种方法可以在 UWP 中更新 XML 文件,所以我只是把这一切都搞错了吗?推荐的方法是什么?顺便说一句,SQLite 现在不是一个选项,因为文件必须保持 XML 格式
【问题讨论】:
-
问题不太一样,但我认为答案也适用于这里
-
根据文档,
Save的重载在 UWP 中不可用。 -
好吧,其他人偶然发现了这个线程并且没有意识到它(因为我一开始没有得到它)。代码“没有问题”(不完全正确,但是......)。问题是 UWP 根本不允许保存(至少在我尝试过的任何文件夹中都不允许)。但是,@Technaur 建议的解决方案可能适用于我的情况。