如何在Java中搜索XML文件,然后输出XML文件名?

如何在Java中搜索XML文件,然后输出XML文件名?,java,xml,Java,Xml,我发现了与我类似的问题,但并不完全相同 你看,我想做的是一个程序,它可以搜索目录中的一系列XML文件,并告诉我哪些XML文件包含给定的字符串 举个例子:我搜索“sexy and i know it”,程序会告诉我“4.xml”,因为在那个xml文件中写着“sexy and i know it”,我找到了一种识别所有xml文件的方法,但现在我只需要一些代码,可以搜索这些xml文件,并给出包含我字符串的xml文件的标题 我定义的代码如下: String path=“C:/Users/Daniel/D

我发现了与我类似的问题,但并不完全相同

你看,我想做的是一个程序,它可以搜索目录中的一系列XML文件,并告诉我哪些XML文件包含给定的字符串

举个例子:我搜索“sexy and i know it”,程序会告诉我“4.xml”,因为在那个xml文件中写着“sexy and i know it”,我找到了一种识别所有xml文件的方法,但现在我只需要一些代码,可以搜索这些xml文件,并给出包含我字符串的xml文件的标题

我定义的代码如下:

String path=“C:/Users/Daniel/Desktop/CD”
文件夹=新文件(路径)
File[]listOfFiles=folder.listFiles()
System.out.println(listOfFiles.length)

原始文件IO 此方法不考虑任何XML标记或任何内容。它只是检查文件中包含的给定字符串

您必须执行的基本步骤是使用裸文件:

  • 循环浏览
    列表文件中的文件
  • 打开每个文件(请参见和)
  • 阅读内容(例如,逐行阅读)
  • 检查您的字符串是否在读取内容中
  • 如果是,则输出文件名并继续下一个文件
  • 或在最小代码中:

    // In looping through files:
    // Step 2:
    BufferedReader r = new BufferedReader(new FileReader(f)); 
    // Step 3:
    String s = r.readLine();
    while (s != null) {
        // Step 4:
        if (s.contains("TestString")) {
            // Step 5:
            System.out.println(f.getAbsolutePath());
            break;
        }
        s = r.readLine();
    }
    r.close();
    
    请注意,如果字符串中有换行符,这将不起作用

    萨克斯2 SAX是一种面向流的XML解析器标准,它读取XML,并在元素启动、文本被发现等情况下,按出现顺序回调处理程序。您可以使用它来检查XML中的文本内容,还可以实现一个有状态处理程序来跟踪
    元素中是否确实遇到了文本,但这有点复杂

    以下是使用SAX2实现的操作:

  • 在类中实现SAX接口
  • 在该内容处理程序中,实现检查字符串的方法
  • 创建一个具有
  • 在读卡器上设置内容处理程序
  • 使用文件的
  • 多姆 DOM是一个标准的XML模型,它在内存中构建一个可以遍历的节点树。此方法使用起来非常简单:

  • 使用
  • 使用获取所有
    元素
  • 使用以下命令检查它们的值是否等于测试字符串
  • 代码:

    documentd=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(f);
    NodeList l=d.getElementsByTagName(“字符串”);
    对于(int i=0;i
    希望这有帮助。

    原始文件IO 此方法不考虑任何XML标记或任何内容。它只是检查文件中包含的给定字符串

    您必须执行的基本步骤是使用裸文件:

  • 循环浏览
    列表文件中的文件
  • 打开每个文件(请参见和)
  • 阅读内容(例如,逐行阅读)
  • 检查您的字符串是否在读取内容中
  • 如果是,则输出文件名并继续下一个文件
  • 或在最小代码中:

    // In looping through files:
    // Step 2:
    BufferedReader r = new BufferedReader(new FileReader(f)); 
    // Step 3:
    String s = r.readLine();
    while (s != null) {
        // Step 4:
        if (s.contains("TestString")) {
            // Step 5:
            System.out.println(f.getAbsolutePath());
            break;
        }
        s = r.readLine();
    }
    r.close();
    
    请注意,如果字符串中有换行符,这将不起作用

    萨克斯2 SAX是一种面向流的XML解析器标准,它读取XML,并在元素启动、文本被发现等情况下,按出现顺序回调处理程序。您可以使用它来检查XML中的文本内容,还可以实现一个有状态处理程序来跟踪
    元素中是否确实遇到了文本,但这有点复杂

    以下是使用SAX2实现的操作:

  • 在类中实现SAX接口
  • 在该内容处理程序中,实现检查字符串的方法
  • 创建一个具有
  • 在读卡器上设置内容处理程序
  • 使用文件的
  • 多姆 DOM是一个标准的XML模型,它在内存中构建一个可以遍历的节点树。此方法使用起来非常简单:

  • 使用
  • 使用获取所有
    元素
  • 使用以下命令检查它们的值是否等于测试字符串
  • 代码:

    documentd=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(f);
    NodeList l=d.getElementsByTagName(“字符串”);
    对于(int i=0;i

    希望这能有所帮助。

    是的,我也说到了这一点,呵呵。。我的问题是,我不知道如何编写代码,我知道如何进行循环,但不知道如何让filereader完全按照我的要求执行,因为它通常会查找标记,然后打印标记,但我只需要搜索字符串,而file reader不知道XML,因此它将读取原始内容。您可以使用
    String.contains
    ,如果这对于您的用例来说已经足够了。否则,请检查我在SAX上的附加注释,因为它使用标准XML阅读器接口,并且只检查标记外部的文本。如果文本位于名为的标记内部,但问题是,网络上给出的示例使用解析器识别和打印标记,我只需要在文本中搜索给定的字符串。由于我对java不是很在行,我可以根据oracle的说法直接使用filereader,您是否可以指导我如何使用它?这是我第一次从程序中读取外部文件,这个文件阅读器的东西似乎让我很困惑:)是的,我也说到了这一点。。我的问题是,我不知道如何编写代码,我知道如何进行循环,但不知道如何让filereader完全按照我的方式运行