gpt4 book ai didi

java - Jackson FasterXML 不会因无效 XML 而失败

转载 作者:行者123 更新时间:2023-11-30 05:29:29 24 4
gpt4 key购买 nike

下面的代码不会抛出错误,可能无法解析,但将 appConfig 字段返回为 null。我尝试过 JAXB,与 JAXB 不同的是,它会抛出错误。我需要当 xml 无效时我的代码无法解析。我怎样才能做到这一点?

波乔:

import lombok.Data;
import com.fasterxml.jackson.annotation.JsonRootName;

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

XML(配置无效.xml):

<?xml version="1.0" encoding="UTF-8"?>
<invalid></invalid>

反序列化 XML:

...
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(配置无效.xml):

<?xml version="1.0" encoding="UTF-8"?>
<app-config>
<invalid></invalid>
</app-config>

最佳答案

添加以下行,否则 Jackson XML 会忽略根元素。

xmlMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);

我在下面提供了代码片段,您可以查看。

........
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);
xmlMapper.setPropertyNamingStrategy(PropertyNamingStrategy.KEBAB_CASE);
xmlMapper.enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
........

关于java - Jackson FasterXML 不会因无效 XML 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57871590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com