2011-04-27 52 views
0

我想创建一个函数,如果指定的字符串在xml文档中,则返回True。问题是我需要搜索整个文档而不是一个指定的元素,并且xml可以包含几个级别......我该怎么做?在C#中搜索整个xml#

+0

您应该提供更多详细信息。你在找什么。只是一个字符串?特定节点中的字符串? – 2011-04-27 13:19:28

+0

你想搜索一切或只是元素值? “ – 2011-04-27 13:19:32

回答

7

将XML的内容视为字符串处理,只搜索正在查找的内容字符串。

public bool FileContainsString(string filePath, string searchString) 
{ 
    string fileContents; 
    using(FileStream file = new FileStream(filePath, FileMode.Open)) 
    using(StreamReader reader = new StreamReader(reader)) 
    { 
     fileContents = reader.ReadToEnd(); 
    } 

    return fileContents.Contains(searchString); 
} 

这个代码是没有测试

如果你想为字符串不区分大小写的搜索,替换

return fileContents.Contains(searchString); 

return fileContents.IndexOf(searchString, StringComparison.OrdinalIgnoreCase) > -1; 
+0

”搜索字符串“应该是一个参数,你不觉得吗?重用,重用,重用... – 2011-04-27 13:25:24

+0

@阿德里安:我很懒 – 2011-04-27 13:32:30

+0

好吧,现在我可以投票:) – 2011-04-27 13:36:38

0
XmlDocument doc; 
bool contains = doc.InnerXml.IndexOf("Your text") != -1 

应该做的诀窍,但它会找到文字即使它包含在标签中,如果您只想检查纯文本使用:

XmlDocument doc; 
    bool contains = doc.InnerText.IndexOf("Your text") != -1