Eclipselink:在解组XML时忽略某些缺失节点的方法吗?

时间:2014-03-26 13:23:26

标签: eclipselink

我已经获得了以下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;
    }

}

1 个答案:

答案 0 :(得分:0)

我通过使用<xml-transient />元素来解决这个问题。这声明了元素,但忽略了它。