如何将 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?的主要内容,如果未能解决你的问题,请参考以下文章