我有一个指向XML元素的XPathNavigator对象。我想将元素重命名为另一个名称(并重命名关联的结束元素)。可以使用XPathNavigator完成吗?
(我有一个解决方法,即删除元素并以不同的名称重新插入它,但这可能会导致性能问题,因为我正在处理非常大的文档)
答案 0 :(得分:1)
这取决于您的基础XML文档表示形式。如果您使用的是XDocument,则可以执行以下操作:
(XElement)(navigator.UnderlyingObject).Name = ...
我认为XmlDocument(除了你的建议)或XPathDocument都不可能。
答案 1 :(得分:1)
对于对这个问题感兴趣的任何人,如果我正确理解了这个问题,并且你想重命名一个元素节点,那么我发现使用ReplaceSelf从XPathNavigator可以很容易地做到这一点。我正在使用.Net framework 4.0版,但这看起来已经有一段时间了。
(快速C#示例)
XmlDocument reportServerDocument = new XmlDocument();
reportServerDocument.Load("C:\Path\to\ReportServer\rsreportserver.config");
XPathNavigator reportServerDocumentNavigator =
reportServerDocument.CreateNavigator();
XPathNavigator authenticationTypesNode =
reportServerDocumentNavigator.SelectSingleNode(
"//Authentication/AuthenticationTypes/RSWindowsNegotiate");
authenticationTypesNode.ReplaceSelf("<Custom/>");
reportServerDocument.Save("C:\Path\to\ReportServer\rsreportserver.config");
log.Info("Updated the AuthenticationTypes: " +
authenticationTypesNode.OuterXml);