如何在不知道文件名的情况下解析 XML 个文件

How to parse XML files without knowledge of filename

我有一个目录,我在其中接收订单作为 XML 文件。我想解析这个文件,然后用它做一些事情。我可以设置一个预定的作业来每隔 * 秒检查一次这个目录。我想用它来解析文件:

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new File("src/test/resources/example_jdom.xml"));
doc.getDocumentElement().normalize(); 

问题是,我不知道文件名。我知道 XML 文件将出现的位置,但我不知道该文件将如何命名。

设置路径时如何解决这个问题? 因为如果我愿意,我可以每毫秒 运行 我的预定作业,所以 2 个文件同时出现的机会可以忽略不计。

如果你知道文件最终所在的目录,你可以像这样列出它的内容:

File dir = new File("/your/path");
System.out.println(dir.listFiles());

这应该让您了解哪些内容可用于解析。 另见 https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/File.html#listFiles()

好吧,一个天真的方法是直接列出。

  1. 取第一个文件
  2. 如果文件已被处理,请查看数据库
  3. 如果文件名不存在,则进行处理
  4. 处理完成后,将文件名和时间戳添加到数据库中。
  5. 对下一个文件执行相同的操作。

如果您使用的是Java8,下面的代码可以帮助您从目录中获取信息。

  try (Stream<Path> walk = Files.walk(Paths.get("C:\test"))) {
      result = walk
              .filter(p -> !Files.isDirectory(p))   // not a directory
              .map(p -> p.toString().toLowerCase()) // convert path to string
              .filter(f -> f.endsWith("png"))       // check end with
              .collect(Collectors.toList());        // collect all matched to a List
  }

查看以下 link 以获取完整示例: https://mkyong.com/java/how-to-find-files-with-certain-extension-only/

我的意思是你会找到很多关于如何获取文件名列表的教程,如果你只对 XML 个文件感兴趣,你可以相应地调整它。