Java 通过@XmlPath MOXy注释解组嵌套集合

Java 通过@XmlPath MOXy注释解组嵌套集合,java,jaxb,eclipselink,moxy,Java,Jaxb,Eclipselink,Moxy,给定以下XML结构: <root> <data>x</data> <details> <some_other_element>...</some_other_element> <collection> <element><a>1</a></element> <element><a>2</a

给定以下XML结构:

<root>
  <data>x</data>
  <details>
    <some_other_element>...</some_other_element>
    <collection>
      <element><a>1</a></element>
      <element><a>2</a></element>
      <element><a>3</a></element>
    <collection>
  </details>
</root>

x
...
1.
2.
3.
我如何使用MOXy将其解组为一个基本平坦的POJO?我尝试了这种方法(为了简洁起见,省略了getter和setter):

@XmlRootElement(name=“root”)
类根{
@XmlElement
私有字符串数据;
@XmlElement
@XmlPath(“细节/某些其他元素”)
私有字符串someOtherElement;
@XmlPath(“详细信息”)
@xmlementwrapper(name=“collection”)
@xmlement(name=“element”)
私人收藏元素;
}
类元素{
@XmlElement
私人字符串a;
}
不幸的是,这只是将一个未初始化的元素添加到
集合中。我希望避免必须声明
详细信息
类(它确实有效),因为这会破坏
@XmlPath
下元素的其他
映射

我已经验证了MOXy是否已实际加载(如jaxb.properties中声明的)


有什么想法吗?

尝试将包装标签和元素添加到
@XmlPath
而不是使用
@xmlementwrapper

@XmlPath("details/collection/element")
@XmlElement(name = "element")
private Collection<Element> elements;

+我是莫西的领导,你的回答是正确的。我希望您不介意我添加了一个
Root
类的示例。非常好,效果非常好(尽管我很确定我以前也尝试过这个变体;-)!
@XmlPath("details/collection/element")
@XmlElement(name = "element")
private Collection<Element> elements;
package forum11153599;

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

@XmlRootElement
class Root {
    @XmlElement
    private String data;

    @XmlPath("details/some_other_element/text()")
    private String someOtherElement;

    @XmlPath("details/collection/element")
    private Collection<Element> elements;

}