有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java MOXy@XmlPath子元素文本

我使用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中没有type元素

通常,当我想用属性而不是元素来实现这一点时,我会映射:

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

它工作完美无瑕,有没有办法用一个简单的xpath获得我期望的结果


共 (1) 个答案

  1. # 1 楼答案

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