【问题标题】:Best way to search for text through xml files通过 xml 文件搜索文本的最佳方法
【发布时间】:2015-03-10 19:46:51
【问题描述】:

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

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

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

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

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

任何想法都会有所帮助。

【问题讨论】:

标签: java xml search full-text-search


【解决方案1】:

因此,您可以在这里执行两种可能的解决方案。首先,对于每个文件,您可以使用 XML 解析器进行解析(Java 有很多 API),然后使用类似 xpath 查询的内容(类似 //*[text() = 'your query'] 找到与您的文本条件匹配的元素。

其次,您可以查看 JamesB 的建议并寻求像 Lucene 这样的索引解决方案,其中对于某个目录中的每个文件,索引这些文件,然后使用诸如 lucenes 搜索 API 之类的东西对它们执行搜索以查找您的文本字符串.

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 2021-12-10
      • 2016-11-03
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 2015-09-07
      相关资源
      最近更新 更多