java - Spring Web XML 不尊重 Java11 中的 XmlRootElement

标签 java xml java-11

我将我的应用程序迁移到 JDK11(从 JDK 8),所以我最多 springboot 2.2.4.RELEASE我添加com.fasterxml.jackson.dataformat:jackson-dataformat-xml

我的模型:

@XmlRootElement(name = "dataModel")
public class DataModel {
    ...
}

我的 Controller :

@RequestMapping(value = "/{model}/columns", method = RequestMethod.GET, consumes = MediaType.ALL_VALUE, produces = { MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<DataModel> getColumnsModel(@PathVariable String model) {
    LOGGER.info("getColumnsModel : model[{}]", model);
    DataModel dataModel = modelService.getColumns(model);
    return Optional.ofNullable(dataModel).map(result -> new ResponseEntity<>(result, HttpStatus.OK)).orElse(new ResponseEntity<>(HttpStatus.NO_CONTENT));
}

客户:

curl -s --header "Accept: application/xml" http://localhost:8084/api/foo/columns

JDK8:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><dataModel><columns>author</columns><columns>zip</columns><columns>city</columns><columns>element</columns><columns>element2</columns><columns>date</columns><columns>title</columns></dataModel>

JDK11:

<DataModel><columns><columns>author</columns><columns>zip</columns><columns>city</columns><columns>element</columns><columns>element2</columns><columns>date</columns><columns>title</columns></columns></DataModel>

新结果很奇怪:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><dataModel> => <DataModel>

<dataModel><columns>author</columns>...</dataModel> => <DataModel><columns><columns>author</columns>...</columns></DataModel>

我尝试添加此依赖项但未解决:

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.3.0.1</version>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.2</version>
    </dependency>

最佳答案

删除这个:

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

关于java - Spring Web XML 不尊重 Java11 中的 XmlRootElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60490845/

相关文章:

java-8 - jdk 11 中缺少外部 jar 文件

java - 如何为我的 GeoTools 项目找到正确的 Java 11 模块名称?

java-在32位Windows中使用大于1Gb的java堆空间文件

php - 无法从字符串解析 XML

当位于两个目录之一时,Gradle 无法解析 java 11 模块的包

json - XML 到 JSON Liquid 在逻辑 APP 中因特殊字符而失败

java - Google Drive 在我的 Android 应用程序中返回错误 400

java - 通过 GET 参数传递复杂的数据结构?

java - 使用java将文本格式应用于CSV文件

java - 将自然文本解析为数组