【问题标题】:How do I assign innerXML value to an XPathNavigator?如何将 innerXML 值分配给 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,现在对其进行测试。

标签: c# xml xml-parsing linq-to-xml


【解决方案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 创建的,所以这对我不起作用。
猜你喜欢
  • 2021-03-18
  • 2018-11-26
  • 2015-10-14
  • 1970-01-01
  • 2021-03-10
  • 2021-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多