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