我试图在内部文本的基础上从文件的根元素中搜索xml元素。我试过这个,但没有工作:
rootElRecDocXml.SelectSingleNode("/ArrayOfRecentFiles[name='"+mFilePath+"']");
我知道旧学校逐行遍历所有文件的方法,但我不想这样做。
请注意:我的根元素名称为ArrayOfRecentFiles
,我的子元素名称为RecentFile
答案 0 :(得分:6)
我们需要看xml; @Lee在这里给出了正确的方法,例如:
var el = rootElRecDocXml.SelectSingleNode(
"/ArrayOfRecentFiles/RecentFile[text()='"+mFilePath+"']");
(将您的编辑/回复记入帐户)
然而!有很多陷阱:
<foo>abc</foo>
与<foo> abc[newline]</foo>
等不同 - 同时回车).SelectSingleNode("/alias:ArrayOfRecentFiles[text()='"+mFilePath+"']", nsmgr);
,其中nsmgr
是名称空间管理器举一个完整的例子,与您的评论相符:
XmlDocument rootElRecDocXml = new XmlDocument();
rootElRecDocXml.LoadXml(@"<ArrayOfRecentFiles> <RecentFile>C:\asd\1\Examples\8389.atc</RecentFile> <RecentFile>C:\asd\1\Examples\8385.atc</RecentFile> </ArrayOfRecentFiles>");
string mFilePath = @"C:\asd\1\Examples\8385.atc";
var el = rootElRecDocXml.SelectSingleNode(
"/ArrayOfRecentFiles/RecentFile[text()='" + mFilePath + "']");
此处el
调用后,null
不 SelectSingleNode
。它找到了节点。
答案 1 :(得分:3)
您需要使用“text()”来检查元素的内部文本,如下所示。
rootElRecDocXml.SelectSingleNode("/ArrayOfRecentFiles[text()='"+mFilePath+"']");