<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.15.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
在 resource 目录下创建 data.xml
<?xml version="1.0" encoding="UTF-8"?>
<dataView>
<data id="1">
<info name="张三" year="1998"/>
<info name="李四" year="1996"/>
</data>
<data id="2">
<info name="王五" year="2000"/>
</data>
</dataView>
ResourceFileReader
import org.apache.commons.io.Charsets;
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;
import java.io.IOException;
@Component
public class ResourceFileReader {
public String readFileToString(String filePath) {
ClassPathResource classPathResource = new ClassPathResource(filePath);
try {
return IOUtils.toString(classPathResource.getInputStream(), Charsets.toCharset("UTF-8"));
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
Dom4jParse
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
@Component
public class Dom4jParse {
@Resource
private ResourceFileReader resourceFileReader;
public void parseXml(String xmlFile) {
try {
String content = resourceFileReader.readFileToString(xmlFile);
Document document = DocumentHelper.parseText(content);
Element dataView = document.getRootElement();
List<Element> dataList = dataView.elements();
for (Element data : dataList) {
System.out.println(data.attributeValue("id"));
List<Element> info = data.elements();
for (Element element : info) {
System.out.println(element.attributeValue("name"));
System.out.println(element.attributeValue("year"));
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class test {
@Resource
private Dom4jParse dom4jParse;
@Test
public void test() {
dom4jParse.parseXml("data.xml");
}
}