java - 如何使用 JAXB 将子元素属性绑定(bind)到字段?

标签 java xml jaxb

给定以下 XML

<mappings>
  <map>
     <source srcAttr="oof">foo</source>
     <target trgAttr="rab">bar</target>
  </map>
  <map>
    ...

是否可以使用 JAXB 解码 <map>将元素合并为一个类 Map 包含 <source> 的值 属性和 <target>

@XmlRootElement
class Map {

   @XmlElement
   String source;

   @???
   String srcAttr;

   @XmlElement
   String target;

   @???
   String trgAttr;
}

我不想为源和目标创建额外的类。

最佳答案

注意:我是 EclipseLink JAXB (MOXy) JAXB (JSR-222) 的领导和成员专家组。

您可以使用 MOXy 的 @XmlPath 扩展来处理这个用例:

import javax.xml.bind.annotation.*;
import org.eclipse.persistence.oxm.annotations.XmlPath;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
class Map {

   String source;

   @XmlPath("source/@srcAttr")
   String srcAttr;

   String target;

   @XmlPath("target/@trgAttr")
   String trgAttr;

}

了解更多信息

关于java - 如何使用 JAXB 将子元素属性绑定(bind)到字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17423679/

相关文章:

java - Spring Security与Keycloak集成时遇到NullPointerException

java - 通过 xml 文件搜索文本的最佳方法

java - 如何使用 Xpath 解析复杂的 XML

xml - 使用 elisp 解析 xml 文件

java - 如何使用 JAXB 忽略绑定(bind)到 XML 的字段

java - 从字符串形成回文

java - Android Base64编码问题上构建Gigya Signature

java - PrintStream 未创建文件?

java - 商标 (™) 符号显示为 ?在使用 JAXB 编码过程中?

Java XML 设计 boolean 标志和值