如何从jackson Xml解析中删除命名空间定义

时间:2015-03-20 10:59:10

标签: xml jackson

我正在使用Jackson数据格式将Pojos序列化为XML。

它工作正常,但我想删除名称空间定义:

@JacksonXmlRootElement(localName="simple_something")
public class Simple {
public int x = 1;
public int y = 2;

}

我做:

ObjectMapper xmlMapper = new XmlMapper();
String xml = xmlMapper.writeValueAsString(new Simple());

我明白了:

<simple_something xmlns="">
  <x>1</x>
  <y>2</y>
</simple_something>

但我想删除xmlns =“”

它看起来像

<simple_something>
  <x>1</x>
  <y>2</y>
</simple_something>

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

确保使用Woodstox Stax实现,而不是使用JDK的Stax实现Oracle捆绑包。这通常通过添加Maven依赖项来明确包含woodstox jar来完成。 这在https://github.com/FasterXML/jackson-dataformat-xml/

的XML模块README上进行了解释

Oracle的实现由于某种原因在命名空间修复模式中添加了声明。它也更慢并且有更多错误,所以没有太多理由依赖它,除非你真的想要最小化外部依赖。

另请注意,该命名空间声明完全是良性的,因此虽然不必要,但它是合法的XML。因此,虽然它是眼睛,所有xml工具应该可以正常使用这些额外的声明。