我正在使用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忽略任何不在绑定映射中的节点?
答案 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>