2013-03-15 136 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