私は一日中XmlDocumentsと戦争をしています。彼らは勝っています。.net 2.0でコンポーネントを構築しているため、それを使用せざるを得ません。これを見て、私が正気を取り戻すのを手伝ってください:
private static string UpdateMeterAccessXml(string meterAccess, int childToUpdate, string field, string value)
{
var doc = new XmlDocument();
doc.LoadXml(meterAccess);
var xpath = String.Format("/items/item[{0}]/{1}", childToUpdate, field);
var modNode = doc.SelectSingleNode(xpath);
modNode.InnerText = value;
doc.ReplaceChild(modNode, doc.SelectSingleNode(xpath));
return doc.OuterXml;
}
doc.ReplaceChildは、ArgumentExceptionを生成します(「削除されるノードはこのノードの子ではありません。」)
XmlDocumentは参照型であるため、ノードを交換する必要はないと思いましたが、必要なノードのInnerTextを更新するだけでは、doc.OuterXmlは変更を反映しません。