如何将 innerXML 值分配给 XPathNavigator?

Posted

技术标签:

【中文标题】如何将 innerXML 值分配给 XPathNavigator?【英文标题】:How do I assign innerXML value to an XPathNavigator? 【发布时间】:2013-03-04 13:43:08 【问题描述】:

当我尝试为InnerXml 赋值时,以下代码行抛出了System.NotSupportedException

XPathNavigator dataItem = currentXPathDoc.CreateNavigator();
dataItem.MoveToChild(XPathNodeType.Element);
dataItem.InnerXml = TemplateEvaluator.NormalizeUnicode(dataItem.InnerXml);

这是文档中的预期:

// Exceptions:
//   System.InvalidOperationException:
//     The System.Xml.XPath.XPathNavigator.InnerXml property cannot be set.

我试图弄清楚是否有办法更改此节点的 InnerXml 而无需对其进行全面重构以使用 XDocument 而不是 XPathNavigator

这可能吗?还是我必须在性能/一致性方面受到影响并在这里使用其他东西?

【问题讨论】:

你能分享一个代码示例来重现这个问题吗?或者dataItem 设置为什么。 @RyanGates 我做到了,我认为另一个 Ryan 的回答为我指明了正确的方向。我将其更改为使用 XDocument 而不是 XPathDocument,现在对其进行测试。 【参考方案1】:

可以编辑由 XMLDocument 对象创建的 XPathNavigator 对象。由 XPathDocument 创建的 XPathNavigator 对象是只读的。

关于 SO 还有一个类似的问题:

Modifying Existing XML Content in C#

它还链接到 Microsoft 关于如何使用 XPathNavigator 修改 XML 的文章:http://msdn.microsoft.com/en-us/library/zx28tfx1.aspx

【讨论】:

这应该是评论而不是答案 不幸的是,我是从 XPathDocument 创建的,所以这对我不起作用。

以上是关于如何将 innerXML 值分配给 XPathNavigator?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字典值分配给 Python 中的变量?

核心数据 - 如何将核心数据中的属性值分配给变量

如何将javascript值分配给临时数据

如何将承诺的返回值分配给变量? [复制]

如何将现有数组值分配给数组指针?

如何将方法引用值分配给 Runnable