MOXy @XmlPath子元素文本

时间:2015-10-19 16:20:14

标签: java moxy

我正在使用MOXy将对象封送到xml。 我试图将两个属性映射为子元素,每个子元素都带有第二个鉴别元素(非属性),如下所示:

<person>
    <name>
        <type>First</type>
        <value>John</value>
    </name>
    <name>
        <type>Last</type>
        <value>Smith</value>
    </name>
</person>

我的课程映射如下:

    @XmlRootElement
    public class Person {
        @XmlPath("name[type/text()='First']/value/text()")
        private String fistName;
        @XmlPath("name[type/text()='Last']/value/text()")
        private String lastName;
    }

我收到以下错误:

Exception [EclipseLink-25016] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: A namespace for the prefix type/ns0:text() was not found in the namespace resolver.

我还尝试在xpath中添加名称空间,但没有抛出异常,但是xml中没有类型元素。

通常当我想用属性代替元素时,我会映射:

@XmlPath("name[@type='First']/value/text()")
private String fistName;
@XmlPath("name[@type='Last']/value/text()")
private String lastName;

它完美无缺,是否有办法通过简单的xpath获得我期望的结果?

1 个答案:

答案 0 :(得分:0)

在你的xml中,你有两个带有“First”的元素,你可以尝试使用First和Last吗?