使用Jackson讀取xml


   找了不少,什么峰的,什么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。還有一種就是可以自定義標簽名的注解是:
@JacksonXmlProperty(localName = "parent") 

  用法就是:

  @JacksonXmlProperty(localName = "parent")(這個是標簽名)

  private String nipples;(這個是自定義的名,上面的標簽自動映射成這個)

<?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>    

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM