Один из возможных способов использования XDocument
:
var doc = XDocument.Load("path_to_xml_file.xml");
//select all leaf elements having value equals "john"
var elementsToUpdate = doc.Descendants()
.Where(o => o.Value == "john" && !o.HasElements);
//update elements value
foreach(XElement element in elementsToUpdate)
{
element.Value = "danny";
}
//save the XML back as file
doc.Save("path_to_xml_file.xml");
Обратите внимание, что XElement.Value
содержит все текстовые узлы внутри элемента, сцепляются.
Значение этого, например, учитывая ваш XML как входной сигнал, не только <Name>
имеет значение «john», но также и <Person>
. Но мы хотим только обновить элементы листа, а не предки.
*) Я предположил, что вы на самом деле не имел в виду, чтобы пометить вопрос по xmldocument так этот ответ, используя новую XML API XDocument
, хотя с помощью XmlDocument также возможно.