JAXB编组和解组避免名称空间

时间:2010-08-01 06:50:04

标签: java namespaces jaxb

这是一个非常常见的问题,但如果有人能为我提供解决方案,我仍然需要一个特定的解决方案。

JAXB.unmarshal('file', class);

但是由于xml文件中存在名称空间,因此不会使用内部元素填充类对象。

我找到的转变是创建一个JAXBContext对象create和unmarshaller,然后让它识别名称空间。

如果有任何其他解决办法,我很好奇。

2 个答案:

答案 0 :(得分:1)

如果XML使用名称空间,那么它们就是元素名称的一部分,不应该将它们解析为它们是未命名空格的元素。因此,这不是JAXB中的一个选项。这些行中的previous question给出了唯一的解决方案,即在解组和删除所有命名空间之前清理XML,并将JAXB对象绑定到未命名空间的名称。

答案 1 :(得分:0)

如果节点始终使用名称空间URI进行限定,则应在JAXB绑定中添加此命名空间信息。许多JAXB注释采用命名空间参数(即XmlRootElement,XmlAttribute,XmlElement等)。 还有一个名为@XmlSchema的包级注释,您可以使用它来指定默认命名空间和默认命名空间限定规则。