当前位置: 首页 > 面试题库 >

JAXB忽略Response XML中的“多余”元素

孔冥夜
2023-03-14
问题内容

我收到一个XML响应,并且它一直在频繁更改(节点不断增加或减少)。在响应xml中的每次更新之后,由于映射的Java类没有所有文件,所以我的代码中断了。

如果响应XML中发生任何更改,是否有任何方法可以避免我的代码中断。

任何帮助将不胜感激。

谢谢。


问题答案:

要处理未知字段,可以添加带List<Object>注释的属性@XmlAnyElement(lax=true)

@XmlAnyElement(lax = true)
private List<Object> anything;

输入中与类的显式属性不对应的任何元素都将被扫入此列表。如果该元素是已知的,则将JAXBContext得到未编组的形式(带@XmlRootElement注释的类或JAXBElement<Foo>),如果上下文不知道该元素,则将得到一个org.w3c.dom.Element

Blaise博客中的完整详细信息。

对于要 删除的 节点,只要您使用可以为null的类型(Integer而不是intBoolean而不是boolean,等等),就可以了。



 类似资料:
  • 我得到了一个XML响应,它经常变化(节点不断增加或减少)。在响应xml的每次更新之后,我的代码会中断,因为映射的Java类没有所有的文件。 谢了。

  • 问题内容: 如标题中所述,我想忽略文档中元素名称的大小写。 我尝试使用Blaise Doughan发布的代码: 这实际上是行不通的。 对于此XML: 问题答案: 您可以将所有属性映射到小写的节点名称,然后包装XMLStreamReader以对其返回的所有属性/元素名称调用toLowerCase()。然后从该XMLStreamReader解组。 我最近为此问题添加了对EclipseLink JAXB

  • 对象使用JAXBContext创建的封送器进行封送。生成的xml将变成: 类Hi是从不能更改的xsd生成的。我的问题是,如果“hello”为null,有没有一种方法可以让封送器忽略nillable参数,并且不向xml输出任何内容?

  • 我目前正在从事一个使用CXF框架请求web服务的项目。 由于某些原因,我开始收到无效的XML SOAP(缺少引用了ID的元素)响应,导致在解组到POJO实例期间抛出异常。 示例: XML摘录,其中属性引用标识符为的元素,该元素在XML中不存在。 其中是XSD模式中的类型 JAXB引发的异常 有没有一种方法可以让JAXB忽略缺失的引用,并且在不引发异常的情况下取消对传入XML响应的处理?

  • 我正在尝试使用JAXB生成一个sitemap.xml,并且忽略了location属性(我想在根元素上生成属性)。 我想生成一个xml,如下所示: 生成根元素,如下所示: 如果我更新测试以使用显式设置位置,那么它将被填充--但我想了解为什么它不能与注释一起工作。

  • 当目标WSDL/XSDS放在某些特定路径下时,wsimport和xjc命令(都是作为Java JDK的一部分下载的)将忽略提供的jaxb绑定文件。