在xml文件中搜索文本

在xml文件中搜索文本,xml,vb.net,xml-parsing,Xml,Vb.net,Xml Parsing,我有一大堆XML文件,需要搜索它们以找到在标记中找到的特定唯一文本,然后从中进行所有提取。有什么好办法吗?我知道标记名和文本-这是我所有的信息,但它可能在几十个文件中的任何位置。提供了一种处理查询XML的好方法,特别是在VB.NET中。您可以使用类似以下内容来查找匹配的文件-这假设您的元素是,并且您正在查找文本ABC Dim path=“C:\path\To\Your\XML” 暗匹配文件= 从目录.EnumerateFiles(路径“*.xml”)中的f 让doc=XElement.Load(

我有一大堆XML文件,需要搜索它们以找到在标记中找到的特定唯一文本,然后从中进行所有提取。有什么好办法吗?我知道标记名和文本-这是我所有的信息,但它可能在几十个文件中的任何位置。

提供了一种处理查询XML的好方法,特别是在VB.NET中。您可以使用类似以下内容来查找匹配的文件-这假设您的元素是
,并且您正在查找文本
ABC

Dim path=“C:\path\To\Your\XML”
暗匹配文件=
从目录.EnumerateFiles(路径“*.xml”)中的f
让doc=XElement.Load(f)
其中,doc….Value=“ABC”
选择f
matchingFiles
将是一个带有匹配文件名的
IEnumerable(字符串)

这将获取指定目录中的*.xml文件(
EnumerateFiles
),解析它们(
XElement.Load
),并查找具有所需元素/值的文件。因为它在解析XML,所以可能不会那么有效

Dim matchingFiles2 =
    From f In Directory.EnumerateFiles(path, "*.xml")
    Where File.ReadLines(f).Any(Function(l) l.Contains("<B>ABC</B>"))
    Select f
您也可以只查找字符串匹配项,但根据XML的格式,您可能需要更改搜索方式。下面的工作原理与前面相同,尽管它可能对XML的格式不太灵活(这假设元素在一行上),但它应该效率更高

Dim matchingFiles2 =
    From f In Directory.EnumerateFiles(path, "*.xml")
    Where File.ReadLines(f).Any(Function(l) l.Contains("<B>ABC</B>"))
    Select f
Dim匹配文件2=
从目录.EnumerateFiles(路径“*.xml”)中的f
其中File.ReadLines(f).Any(函数(l)l.Contains(“ABC”))
选择f

但是,要回答您在评论中的问题,是的,您需要“依次查看每个文件”了解一些方法。

那么这是最好的方法吗?我投了反对票,因为这个问题没有显示任何研究成果,而不是因为它是一个糟糕的问题。如果
XmlDocument
类不符合您的需要,请更新您的问题,包括您尝试过的内容以及它不起作用/不符合您的需要的原因。如果不打开文件查看,您的软件(或任何相关软件)将无法神奇地知道唯一文本所在的文件!打开每个文件并进行检查所需的代码是最快的——当然比在记事本中打开所有文件并使用搜索要好得多!“被否决”,这是什么意思?我的问题不是人气竞赛P