在Jackson中动态设置XML名称空间
我目前有:在Jackson中动态设置XML名称空间,xml,jackson,xml-namespaces,Xml,Jackson,Xml Namespaces,我目前有: @JacksonXmlRootElement(namespace = "some-ns", localName = "queryResult") public class QueryResult { ... } 现在我需要通过一个配置文件(即在运行时设置)来配置“一些ns” 实现这一点的最佳方法是什么?您可以编写一个自定义的注释Introspector: import com.fasterxml.jackson.databind.PropertyName; import c
@JacksonXmlRootElement(namespace = "some-ns", localName = "queryResult")
public class QueryResult {
...
}
现在我需要通过一个配置文件(即在运行时设置)来配置“一些ns”
实现这一点的最佳方法是什么?您可以编写一个自定义的
注释Introspector
:
import com.fasterxml.jackson.databind.PropertyName;
import com.fasterxml.jackson.databind.introspect.AnnotatedClass;
import com.fasterxml.jackson.dataformat.xml.JacksonXmlAnnotationIntrospector;
public class MyJacksonXmlAnnotationIntrospector extends JacksonXmlAnnotationIntrospector
{
private static final long serialVersionUID = 1L;
@Override
public PropertyName findRootName(AnnotatedClass ac) {
PropertyName pn = super.findRootName(ac);
return pn.withNamespace("custom");
}
}
然后将其传递给jackson mapper:
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.setAnnotationIntrospector(new MyJacksonXmlAnnotationIntrospector());
xmlMapper.writeValue(System.out, new QueryResult());