如何用Java读取多个XML文件?

时间:2018-02-20 11:02:07

标签: java xml file

我有一个目录,其中包含几个类似格式的XML文件。以下是一个例子

<students>
    <forename>Joe</forename>
    <surname>Bloggs</surname>
    <DOB>01/01/1970</DOB>
    <educationLevel>High School</educationLevel>
</students>

有没有办法遍历包含xml文件的目录(可能在某种循环中?)并逐个读取xml文件?

5 个答案:

答案 0 :(得分:1)

您可以使用以下方法迭代给定目录中的.xml个文件:

public static void readFiles(String directory) throws IOException {
    File dir = new File(directory);
    if (dir.exists() && dir.isDirectory()) {
        File [] files = dir.listFiles((d, name) -> name.endsWith(".xml"));
        if (files != null) {
            for (File file: files) {
                String xml = new String(Files.readAllBytes(file.toPath()), 
                                        Charset.defaultCharset());
                //parse xml
            }
        }
    }
}

要解析您可以使用的XML,例如Jackson Object Mapper

ObjectMapper xmlMapper = new XmlMapper();
YourPOJO value = xmlMapper.readValue(xml, YourPOJO.class);

答案 1 :(得分:0)

获取XML文件驻留目录

  • 获取特定目录中存在的.xml文件的数量(验证此操作的每个文件的扩展名,以便消除其他文件格式)
  • 然后将其放入循环中并迭代每个文件并根据您的解析器(DOM,SAX,JAXB等)解析它们并以所需格式保存

答案 2 :(得分:-1)

检索数组中的所有学生标记,例如在python中我想获得具有特定id的所有div:

link4 = "Any HTML Link"

data3 = requests.get(link4)

soup5 = BeautifulSoup(data3.text, "lxml")

soup6 = BeautifulSoup(str(soup5.findAll("div", { "id" : "specs-list" })),"lxml")

在此之后,您可以循环遍历soup6转

答案 3 :(得分:-1)

我最终这样做了:

public static void directoryLoop(File folder) {
    for (final File fileEntry : folder.listFiles()) {
        if (fileEntry.isDirectory()) {
            directoryLoop(fileEntry);
        } else {
            xmlReader(fileEntry.getName());
        }
    }
}

其中xmlReader(fileEntry.getName());是我读取XML文件的方法,该文件将文件名作为参数。

答案 4 :(得分:-2)

假设你已经阅读了已经实现的xmlfile并且你知道你的文件名,你可以这样做:

List<String> filenames;

for(String filename : filenames){
    myXmlReadingMethod( "path of my Files " + filename);
}

我希望这有助于你升职。