2010-09-09 4 views
1

Я перемещаю XML-документ с помощью XPathNodeIterator, и я хочу изменить значения некоторых узлов. я не могу понять, как :(Как изменить значение узла при итерации с помощью 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

+0

@Robaticus, thnx, извините – flamey

+0

Не беспокойтесь об этом. Это не так много усилий для изменения. – Robaticus

ответ

0

Я нашел способ:

  1. Заменить XPathDocument с XmlDocument
  2. Когда я к нужному узлу

...

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