我已经获得了以下XML文件,映射文件和POJO。方案是XML文件可能包含也可能不包含id
元素<id>PartnerId</id>
。但是,如果它存在,那么我想要映射到POJO。否则,它应该被忽略。
我如何实现这一目标?就像现在一样,我不断得到例外情况告诉我
&#34; XPath必须包含属性的@符号或以/ text()结尾 用于文本节点。例如:&#34; @ name&#34;或&#34;名称/文字()&#34;
正如您从映射文件中所知,我已尝试添加required="false"
和default="0"
,但没有成功。
XML:
<?xml version="1.0" encoding="UTF-8"?>
<partner>
<key>partnerKey</key>
<name>partnerName</name>
</partner>
映射:
<?xml version="1.0"?>
<xml-bindings
xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/oxm http://www.eclipse.org/eclipselink/xsds/eclipselink_oxm_2_3.xsd"
version="2.3"
package-name="com.company.pas.entity">
<java-types>
<java-type name="com.company.pas.entity.Partner">
<xml-root-element/>
<xml-type prop-order="id key name"/>
<java-attributes>
<xml-element java-attribute="id" xml-path="id/text()" required="false" default="0"/>
<xml-element java-attribute="key" xml-path="key/text() "/>
<xml-element java-attribute="name" xml-path="name/text()"/>
</java-attributes>
</java-type>
</java-types>
</xml-bindings>
POJO
package com.company.pas.entity;
import javax.xml.bind.annotation.XmlElement;
public class Partner {
private int id;
private String key;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
@XmlElement(nillable=false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
答案 0 :(得分:0)
我通过使用<xml-transient />
元素来解决这个问题。这声明了元素,但忽略了它。