首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于无效的XML,FasterXML不会失败。

对于无效的XML,FasterXML不会失败。
EN

Stack Overflow用户
提问于 2019-09-10 13:12:38
回答 1查看 460关注 0票数 1

下面的代码不会抛出错误,可能无法解析,但将appConfig字段返回为null。我尝试过JAXB,不像JAXB抛出错误。当xml无效时,我需要我的代码不能解析。我怎么能这么做?

波霍:

代码语言:javascript
复制
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonRootName;

@Data
@JsonRootName("app-config")
public class Config {
    private String type;
    private String body;
}

XML(config-droid.xml):

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<invalid></invalid>

反序列化XML:

代码语言:javascript
复制
...
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE);
xmlMapper.enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
Config appConfig = xmlMapper.readValue(new File("config-invalid.xml"), Config.class);
...

它只抛出如下所示的xml :XML(config-droid.xml):

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<app-config>
    <invalid></invalid>
</app-config>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-10 14:56:03

添加下面一行,否则Jackson将忽略根元素。

代码语言:javascript
复制
xmlMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);

我提供下面的代码片段,您可以检查。

代码语言:javascript
复制
........
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
xmlMapper.setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE);
xmlMapper.enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
........
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57871590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档