在xml文件中搜索文本

时间:2014-07-09 16:09:09

标签: xml vb.net xml-parsing

我有一些XML文件,需要搜索它们以查找在标记中找到的特定唯一文本,然后从中进行所有提取。有没有办法做到这一点?我知道标签名称,我知道文本 - 这是我拥有的所有信息,但它可以在几十个文件中的任何位置。

1 个答案:

答案 0 :(得分:0)

LINQ to XML提供了一种很好的方法来处理查询XML,尤其是在VB.NET中。您可以使用以下内容查找匹配的文件 - 这假设您的元素为<B>,并且您正在查找文本ABC

Dim path = "C:\Path\To\Your\XML"
Dim matchingFiles =
    From f In Directory.EnumerateFiles(path, "*.xml")
    Let doc = XElement.Load(f)
    Where doc...<B>.Value = "ABC"
    Select f

matchingFiles将是IEnumerable(Of String),文件名匹配。

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

您也可以只查找字符串匹配,但根据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

但是,要在评论中回答你的问题,是的,你需要&#34;依次浏览每个文件&#34;一些如何。