在 C# 中替换 xml 元素值

Replacing an xml element value in c#

这是我的 xml 文件数据

<Persons>
    <Person>
        <Name>john</Name>
    </Person>
    <Employee>
        <Detail>
            <Firstname>john</FirstName>
        </Detail>
    </Employee>
    <Student>
        <FullName>john</FullName>
    </Student>
</Persons>

我想将所有地方的 "john" 替换为 "danny"。

如何在 C# 中执行此操作?

使用 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>的值。但是我们只想更新叶元素而不是祖先元素。

*) 我假设你并不是真的想用 标记问题所以这个答案使用更新的 XML API XDocument, 虽然也可以使用 XmlDocument。