JIBX绑定松散的xml结构

时间:2013-10-23 15:44:02

标签: java xml data-binding unmarshalling jibx

我正在使用org.jibx.runtime.impl.UnmarshallingContext.unmarshalDocument(java.io.Reader rdr)类来解组我的xml。

这是我的绑定地图。

<?xml version="1.0" encoding="UTF-8"?>

  <binding xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <mapping name="md" class="com.mycompany.metadata.JiBXMetadata" ordered="false">
          <value name="alice" field="aliceStr" style="element" usage="optional"/>
          <value name="bob" field="bobStr" style="element" usage="optional"/>
          <value name="carol" field="carolStr" style="element" usage="optional"/>
      </mapping>
  </binding>

因此,如果xml以任何顺序具有alice,bob或carol中的任何节点,它就可以正常工作。如果xml中缺少任何节点,它仍然可以正常工作。但是如果xml中有一个额外的节点(比如steve)那么我会得到一个JiBXException。

有没有办法让unmarshaller忽略任何不在绑定映射中的节点?

1 个答案:

答案 0 :(得分:0)

添加灵活选项可能会有所帮助。您可以尝试在映射中添加灵活属性,如下所示吗?

<binding xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <mapping name="md" class="com.mycompany.metadata.JiBXMetadata" ordered="false">
      <value name="alice" field="aliceStr" style="element" usage="optional" flexible="true"/>
      <value name="bob" field="bobStr" style="element" usage="optional" flexible="true"/>
      <value name="carol" field="carolStr" style="element" usage="optional" flexible="true"/>
  </mapping>