找了不少,什么峰的,什么dn的參差不齊的資料,廢話不少,問題是導入的包也沒有。不多廢話,看下面代碼直接復用。
package bean;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import java.io.FileInputStream;
import java.io.IOException;
/**
* @author Sunshine
* @version 1.0
* @date 2020/9/24 13:17
*/
public class ReadTest {
public static void main(String[] args) throws IOException {
FileInputStream input = new FileInputStream("c:\\aoligei\\dabaojian.xml(絕對路徑,不知道啥是絕對路徑就打開xml所在的文件夾,復制路徑再加上文件名)");
XmlMapper mapper = new XmlMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Project pomXml = mapper.readValue(input, Project.class);
}
}
這里要注意用Maven構建項目,構建過程就不展示了 idea自己整。不用也可以,下載了jar引入本地依賴也行。下面是依賴的Maven 坐標
Tips:綠色是主要依賴,后面的無關緊要。看你用不用。
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.11</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.11</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.8.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
這里需要注意到的是上面標注的紅色部分
Project pomXml = mapper.readValue(input, Project.class);
這句是啥意思呢,言簡意賅就是,按揭。按揭就是你想要啥就定義啥,需要注意的坑是實體類定義時,注意嵌套關系,比如說就像下面的pom.xml的格式:
project 標簽:需定義成實體類,
parent標簽:同上
尤其注意下面標注粉色的位置,因為這種嵌套關系就好比List<對象> ,就是說 dependency 也得定義成實體類。然后project中dependencies的定義為List<Dependency > dependencies;而像藍色部分的parent就可以在project中直接給parent 實體就ok,因為是一個對象下的屬性 不用定義List。還有一種就是可以自定義標簽名的注解是:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.example</groupId> <artifactId>jacksonXML</artifactId> <version>1.0-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.11</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.11</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.8.11</version> </dependency> <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.73</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>