这是我的xml文件数据
<Persons>
<Person>
<Name>john</Name>
</Person>
<Employee>
<Detail>
<Firstname>john</FirstName>
</Detail>
</Employee>
<Student>
<FullName>john</FullName>
</Student>
</Persons>
我想在所有地方将“john”替换为“danny”。
我怎样才能在c#中做到这一点?
答案 0 :(得分:2)
使用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。