C# 在c中替换xml元素值#

C# 在c中替换xml元素值#,c#,xml,xml-parsing,linq-to-entities,xmldocument,C#,Xml,Xml Parsing,Linq To Entities,Xmldocument,这是我的xml文件数据 <Persons> <Person> <Name>john</Name> </Person> <Employee> <Detail> <Firstname>john</FirstName> </Detail> </Employee>

这是我的xml文件数据

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

厕所
厕所
厕所
我想在所有地方把“约翰”换成“丹尼”

如何使用c#?

一种可能的方法来实现这一点:

请注意,
XElement.Value
包含元素中所有连接的文本节点

这一点的意义在于,例如,将XML作为输入,不仅
具有“john”值,而且
。但是我们只想更新叶元素,而不是祖先元素

*)我假设您并不是真的想通过使用较新的XMLAPI
XDocument
来标记这个问题,尽管也可以使用XmlDocument

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");