我试图从内部文本的基础上从文件的根元素中搜索xml元素。我试过这个,但没有工作:通过其内部文本在xml中查找元素
rootElRecDocXml.SelectSingleNode("/ArrayOfRecentFiles[name='"+mFilePath+"']");
我知道老学校的方式来遍历所有文件元素的元素,但我不想这样做。
请注意:我的根元素名称是ArrayOfRecentFiles
和我的孩子元素名称是RecentFile
我试图从内部文本的基础上从文件的根元素中搜索xml元素。我试过这个,但没有工作:通过其内部文本在xml中查找元素
rootElRecDocXml.SelectSingleNode("/ArrayOfRecentFiles[name='"+mFilePath+"']");
我知道老学校的方式来遍历所有文件元素的元素,但我不想这样做。
请注意:我的根元素名称是ArrayOfRecentFiles
和我的孩子元素名称是RecentFile
我们需要看到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
调用之后。它找到节点。
你需要使用“文本()”,以核对如下元素的内部文本。
rootElRecDocXml.SelectSingleNode("/ArrayOfRecentFiles[text()='"+mFilePath+"']");
它返回null – PUG 2010-07-12 08:54:28
试试这个然后没有意识到你有一个额外的子节点级别rootElRecDocXml.SelectSingleNode(“/ ArrayOfRecentFiles/RecentFile [文本()='”+ mFilePath +“']”);上述 – 2010-07-12 09:05:48
是我的XML – PUG 2010-07-12 09:05:07
这是我的XML: C:\ ASD \ 1个\实例\ 8389.atc C:\ ASD \ 1个\实例\ 8385.atc \t ArrayOfRecentFiles> –
PUG
2010-07-12 09:11:32
@jaminator - 请参阅更新 – 2010-07-12 09:33:37