我正在使用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获得我期望的结果?
答案 0 :(得分:0)
在你的xml中,你有两个带有“First”的元素,你可以尝试使用First和Last吗?