【发布时间】:2016-03-11 19:10:20
【问题描述】:
我在 Xamarin 中编写 Android 应用程序
我有正在写入文件的 xml(已实现)
在不同的活动中,我尝试打开这个文件,替换一些字符串并保存
像这样打开文件
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”:
<Order CallConfirm="1" PayMethod="Безнал" QtyPerson="" Type="2" PayStateID="0" Remark="{Comment}" RemarkMoney="0" TimePlan="" Brand="1" DiscountPercent="0" BonusAmount="0" Department=""><Customer Login="" FIO="{FIO}" /><Address CityName="{CityName}" StationName="" StreetName="{StreetName}" House="{HouseName}" Corpus="" Building="" Flat="{FlatName}" Porch="" Floor="" DoorCode="" /><Phone Code="{Code}" Number="{Phone}" /><Products><Product Code="398" Qty="{QTY}" /><Product Code="{ProductCode1}" Qty="{QTY1}" /><Product Code="{ProductCode2}" Qty="{QTY2}" /></Products></Order>
这是doc2.Save (filePath);之后的doc2:
<Order CallConfirm="1" PayMethod="Безнал" QtyPerson="" Type="2" PayStateID="0" Remark="{Comment}" RemarkMoney="0" TimePlan="" Brand="1" DiscountPercent="0" BonusAmount="0" Department=""><Customer Login="" FIO="{FIO}" /><Address CityName="{CityName}" StationName="" StreetName="{StreetName}" House="{HouseName}" Corpus="" Building="" Flat="{FlatName}" Porch="" Floor="" DoorCode="" /><Phone Code="{Code}" Number="{Phone}" /><Products><Product Code="{ProductCode}" Qty="{QTY}" /><Product Code="{ProductCode1}" Qty="{QTY1}" /><Product Code="{ProductCode2}" Qty="{QTY2}" /></Products></Order>
为什么不保存?
【问题讨论】:
-
请在格式化您的代码和 XML 方面付出更多努力。代码现在到处都是,每个 XML 文档都在一行中...
-
您需要将
str保存回doc2。 IE。doc2.OuterXml = str。由于 c# 字符串是不可变的,Replace调用返回一个新字符串而不是修改原始字符串。虽然我真的根本不会这样做,但我会使用XmlDocumentAPI 本身来进行修改。 -
@dbc 当我写这个时,我有这个错误。错误 CS0200:无法将属性或索引器“System.Xml.XmlNode.OuterXml”分配给 -- 它是只读的
-
啊,你可能想使用
InnerXml。或者根本不这样做,使用下面的XDocument。 (或者使用File.ReadAllText然后进行字符串替换。如果你要立即将它转回字符串,为什么还要解析XML?)
标签: c# android xml xamarin xamarin.android