如何在Java中搜索XML文件,然后输出XML文件名?
我发现了与我类似的问题,但并不完全相同 你看,我想做的是一个程序,它可以搜索目录中的一系列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”如何在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
文件夹=新文件(路径)
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实现的操作:
元素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实现的操作:
元素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完全按照我的方式运行