通过 xml 个文件搜索文本的最佳方式

Best way to search for text through xml files

我在一个根文件夹下的不同子目录中有数千个 xml 文件。 我的要求是在所有这些 xml 文件中搜索文本,而不管它们在 xml 文件中的位置。

目前我正在使用 BufferedReader class 读取这些 xml 文件(我的代码如下所示)

     while ((currentLine = br.readLine()) != null) {
        if (currentLine.contains("myTargetString")) {
              temp = currentLine;
            myArraylist.add(temp );
        }

但我知道应该有一些最好的方法来搜索这些 xml 文件,但无法找到最好的 API 或方法。

我得到一个字符串作为输入,我的程序应该能够搜索所有 xml 文件和 return 文件名。使用此 BufferedReader 会花费很多时间。

任何想法都会有所帮助。

因此,您可以在此处执行两种可能的解决方案。首先,对于每个文件,您可以使用 XML paser 进行解析(Java 有很多 API),然后使用 xpath 查询之类的东西(例如 //*[text( ) = 'your query'] 找到符合您的文本标准的元素。

其次,您可以看看 JamesB 的建议,然后寻找像 Lucene 这样的索引解决方案,对于某个目录中的每个文件,索引这些文件,然后使用类似 lucenes search API 找到您的文本字符串。

如果你需要提高速度并且不能使用索引(lucene 是我的建议),你可以先使用旧的递归 grep 命令过滤你的输入 grep -r <searchtext> <path>。 (Link to grep on windows question)。然后使用 Java 解析生成的文件以过滤掉误报(注释掉块、匹配元素名称……)。 Grep 是恕我直言,在没有索引的情况下在大量文件中查找文本的最快方法。