我在Xamarin中编写Android应用程序
我有写入文件的xml(已实现)
在不同的Activity上我尝试打开这个文件,替换一些字符串并保存
像这样打开文件
var doc2 = new XmlDocument(); var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); var filePath = System.IO.Path.Combine(documentsPath, "myFile.xml"); doc2.Load (filePath);
替换这样的字符串:
string str; str = doc2.OuterXml; str = str.Replace ("{ProductCode}", Code1); Console.WriteLine ("look"); Console.WriteLine (str); doc2.Save (filePath); Console.WriteLine (doc2.OuterXml);
当我显示str时,我看到"ProductCode"发生了变化.
但当我显示"doc2.OuterXML"时,我发现它没有保存.
这是"str":
这是doc2之后doc2.Save (filePath);
:
为什么不保存?
您尚未修改文档.您已经向文档询问了自身的字符串表示形式,然后为同一个变量分配了一个新字符串 - 但这根本不会更改文档中的XML.
我强烈建议您使用LINQ to XML(这是一个更好的XML API),此时您可以:
XDocument doc = XDocument.Load(filePath); var query = doc.Descendants("Product") .Where(p => (string) p.Attribute("Code") == "{ProductCode}"); foreach (var element in query) { element.SetAttributeValue("Code", Code1); } doc.Save(filePath);