C# 如何查找和更改xml元素的内部文本?C
我有一个下面的xml文件。我需要更改任何包含值«Museum»的标记的内部文本,或者仅更改一个标记作为开始:C# 如何查找和更改xml元素的内部文本?C,c#,.net,xml,xelement,C#,.net,Xml,Xelement,我有一个下面的xml文件。我需要更改任何包含值«Museum»的标记的内部文本,或者仅更改一个标记作为开始: <src> <riga> <com>¾</com> <riquadro797>Direction to move</riquadro797> </riga> <riga> <llt> <
<src>
<riga>
<com>¾</com>
<riquadro797>Direction to move</riquadro797>
</riga>
<riga>
<llt>
<com>Museum</com>
<elemento797>Direction not to move</elemento797>
</llt>
</riga>
<operation>
<com> </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+"']");