C# 如何查找和更改xml元素的内部文本?C

C# 如何查找和更改xml元素的内部文本?C,c#,.net,xml,xelement,C#,.net,Xml,Xelement,我有一个下面的xml文件。我需要更改任何包含值«Museum»的标记的内部文本,或者仅更改一个标记作为开始: <src> <riga> <com>&#190;</com> <riquadro797>Direction to move</riquadro797> </riga> <riga> <llt> <

我有一个下面的xml文件。我需要更改任何包含值«Museum»的标记的内部文本,或者仅更改一个标记作为开始:

<src>
   <riga>
      <com>&#190;</com>
      <riquadro797>Direction to move</riquadro797>
   </riga>
   <riga>
      <llt>
         <com>Museum</com>
         <elemento797>Direction not to move</elemento797>
      </llt>
   </riga>
  <operation>
      <com>&#160;</com>
      <riquadro797>Museum</riquadro797>
  </operation> 
  <riga>
    <gt>
        <elemento797>Direction not to move</elemento797>
    </gt>
 </riga>    
</src>
此代码不正确,因为我无法预测哪个元素将包含:

 var el = rootElRecDocXml.SelectSingleNode("src/riga/gt/elemento797[text()='"+mFilePath+"']");

怎么做?任何帮助都将不胜感激

只需抓取具有博物馆价值的所有元素:


正如Selman22所指出的,doc只是xml的一个工作副本。您需要调用doc.Save以将任何内容应用回磁盘,或者在需要的任何位置

元素只查看继承权中的单个级别。我认为您需要的是子体…

如果您想要一个较旧的XPath选项,您需要在树上进行全局搜索-您可以使用XPath表达式来实现这一点:

var els = rootElRecDocXml.SelectNodes("//[text()='"+mFilePath+"']");

你有没有试过用谷歌搜索来解析文档?你应该注意,除非你保存它,否则这些更改不会影响实际文档。@Selman22你到底为什么要告诉别人。请注意,除非您保存,否则不会保存任何内容。。。。嗯?因为这是真的。以前没有使用LINQtoXML的人很容易认为这会影响文档本身。很明显,你在这里没有看到足够的问题,否则你会明白我的意思。
 var doc = XDocument.Parse(xml);
 var elements = doc.Descendants().Where(e => e.Value == "Museum");

 foreach (var ele in elements)
    ele.Value = "Test";

 //doc is updated with new values
var els = rootElRecDocXml.SelectNodes("//[text()='"+mFilePath+"']");