2010-09-09 41 views
1

我正在使用XPathNodeIterator导航XML文档,并且我想更改一些节点的值。 我无法弄清楚如何:(如何在使用XPathNodeIterator迭代时修改节点值?

下面是我使用的代码:

XPathDocument docNav = new XPathDocument(path); 

XPathNavigator nav = docNav.CreateNavigator(); 
nav.MoveToRoot(); 

XPathNodeIterator itemsIterator = nav.Select("/foo/bar/item"); 
while (mediumsIterator.MoveNext()) 
{ 
    XPathNodeIterator subitemsIterator = itemsIterator.Current.Select("SubitemsList/name"); 
    while (subitemsIterator.MoveNext()) 
    { 
     XPathNodeIterator nodesIterator = itemsIterator.Current.Select("Param"); 
     nodesIterator.MoveNext(); 
     String the_params = nodesIterator.Current.Value; 

     // check if I need to modify nodesIterator.Current.Value 
     // ... 
     // ok I do - how? 
    } 
} 

和XML文件样本:

<?xml version="1.0" encoding="utf-8"?> 
<foo> 
    <bar> 
    <item> 
     <Param /> 
     <SubitemsList> 
     <name>name one</name> 
     <name>name two</name> 
     ... 
     </SubitemsList> 
    </item> 
    ... 
    </bar> 
</foo> 

或者,也许有更好的方法来做到?此

+0

请不要把标签的称号。我已经为你删除了它们。 – Robaticus 2010-09-09 17:07:43

+0

@Robaticus,thnx,对不起 – flamey 2010-09-09 17:15:00

+0

不用担心。改变并不需要很多努力。 – Robaticus 2010-09-09 17:18:33

回答

0

我找到了一种方法:

  1. XmlDocument
  2. 更换XPathDocument当我到所需要的节点

...

XmlNode node = ((IHasXmlNode)nodesIterator.Current).GetNode(); 
node.InnerText = "new text";