2016-08-18 4 views
0

Как заменить значение узла some value на другое значение с помощью Linq. Наконец, мне нужна строка с замененным значением.C# Как изменить значения узла Xml с помощью Linq

Xml:

<ROOT> 
    <A> 
    <A1> 
     <elementA1></elementA1> 
    </A1> 
    <A2> 
     <elementA2>some value</elementA2> 
    </A2> 
    </A> 
</ROOT> 

C#:

XDocument xDoc = XDocument.Parse(@"<ROOT> 
             <A> 
              <A1> 
              <elementA1></elementA1> 
              </A1> 
              <A2> 
              <elementA2>Some value</elementA2> 
              </A2> 
             </A> 
             </ROOT>"); 

xDoc.Elements("ROOT") 
      .Elements("A") 
      .Elements("A2") 
      .Elements("elementA2") 
      .Select(e => e.Value).ToList().ForEach(e => /* change the value */); 

ответ

3

Вы можете использовать метод XPathSelectElement для этого:

var newValue = "New value"; 

var xDoc = XDocument.Parse(@"<ROOT> 
    <A> 
     <A1> 
      <elementA1></elementA1> 
     </A1> 
     <A2> 
      <elementA2>Some value</elementA2> 
     </A2> 
    </A> 
</ROOT>"); 

xDoc.XPathSelectElement("/ROOT/A/A2/elementA2").SetValue(newValue); 
+0

Thx, который работал! – oldsport

1

Не выбирайте значения из всех узлов, просто получить в узлах себя и изменить свойство Value.

Смежные вопросы