我整天都在与 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 不会反映更改。