2013-03-15 71 views
1

下面的代码行抛出一个System.NotSupportedException当我尝试值赋给InnerXml如何将innerXML值分配给XPathNavigator?

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

我想如果弄清楚:

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

这是从文档预期有一种方法来改变这个节点的InnerXml,而不用全重构它来使用XDocument而不是XPathNavigator

这可能吗?或者我必须采取性能/一致性命中并在这里使用别的东西?

+0

你能分享的样本重现问题的代码?或者'dataItem'设置为什么。 – 2013-03-15 18:34:40

+0

@RyanGates我做了,我认为Ryan的另一个答案指出了我的正确方向。我将它改为使用XDocument而不是XPathDocument,现在就进行测试。 – Codeman 2013-03-15 19:55:08

回答

3

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

还有就是这个在如此相似的另一个问题:

Modifying Existing XML Content in C#

网站还链接了来自微软如何使用的XPathNavigator修改XML的文章:http://msdn.microsoft.com/en-us/library/zx28tfx1.aspx

+1

这应该是一个评论,而不是一个Answwer – MethodMan 2013-03-15 18:11:47

+0

不幸的是,我从'XPathDocument'创建这个,所以这对我不起作用。 – Codeman 2013-03-15 19:43:25