2016-04-27 18 views
1

Ich habe die folgende XML-Schema:Java xmlpath Annotation mit mehreren Bedingungen

<children> 
    <component library="xml"> 
     <properties Output="1"/> 
     <data> 
      <root scrollposition="1"> 
       <entry name="Demo" expanded="1"> 
        <entry name="Subentry"> 
        </entry> 
       </entry> 
      </root> 
     </data> 
    </component> 
    <component library="xml"> 
     <properties/> 
     <data> 
      <root scrollposition="1"> 
       <entry name="Demo" expanded="1"> 
        <entry name="Subentry"> 
        </entry> 
       </entry> 
      </root> 
     </data> 
    </component> 
</children> 

Jetzt möchte ich Einträge bekommen, wo der Wert des Attributs libraryxml und den Wert des Attributs Output im Element properties ist 1. Meine Klasse ist die folgende:

public class Component { 
    @XmlPath("component[@library='xml' and properties[@Output='1']]/data/root/entry") 
    private List<Entry> entries; 

    public List<Entry> getEntries() { 
    return entries; 
    } 

    public void setEntries(List<Entry> entries) { 
    this.entries = entries; 
    } 
} 

Aber die Liste ist null. Ich denke, etwas in der Annotation 'XmlPath' ist falsch, aber ich weiß jetzt nicht, was falsch ist.

Antwort

0

Ich fand heraus, dass das Problem ist, dass mit der aktuellen Version von MOXy die XPath-Bedingungen zu überprüfen, ob ein Attribut vorhanden ist oder die nicht gleiche Bedingung nicht unterstützt werden.

Die einzige unterstützte Bedingung ist [@name='val']