JAXB - 忽略中间元素

Posted

技术标签:

【中文标题】JAXB - 忽略中间元素【英文标题】:JAXB - Ignore intermediate element 【发布时间】:2021-11-20 00:52:33 【问题描述】:

我能否以忽略未知中间元素的方式将 JAXB 结构映射到 XML 结构?

@XmlRootElement(name="foo")
public class Foo 
   @XmlElement(name="bar")
   Bar bar;

要匹配类似于 XML 的

<foo>
  <unknown>
    <bar/>
  </unknown>
</foo>

【问题讨论】:

我认为JAXB 不可能自动忽略该元素。您可以使用JAXB Moxy 并使用@XmlPath("unknown/bar") 来避免创建额外的类,或者您可以尝试创建@XmlJavaTypeAdapter 并忽略它并仅获取内部值。 【参考方案1】:

我做到了

使用 javax.xml.parsers.DocumentBuilder 解析 XML String 得到根节点 为标签名为“bar”的元素编写了 XML 树的广度优先搜索 然后使用 javax.xml.bind.Unmarshaller 将该节点解组到我的 JAXB 对象中。

【讨论】:

以上是关于JAXB - 忽略中间元素的主要内容,如果未能解决你的问题,请参考以下文章

JAXB - 忽略XML元素

JAXB:如何在解组 XML 文档期间忽略命名空间?

JAXB 解组中的忽略和符号 (Java 1.8)

使用空字段的JAXB编组

MOXy @XmlPath 被忽略

无法使用jaxb2-maven-plugin将WSDL解析为不同的包