Reputation: 993
How can I replace the node value some value
with another value using Linq.
Finally I need a string with the replaced value.
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 */);
Upvotes: 0
Views: 1417
Reputation: 736
You can use the XPathSelectElement
method for this:
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);
Upvotes: 3
Reputation: 7681
Don't select the Value from all the nodes, just get the nodes themselves and change the Value property.
Upvotes: 1