2013-07-26 72 views
3

我想查看在下面的xml文件中是否存在具有指定名稱的主題元素。JAXB Moxy getValueByXpath給出null

的input.xml

<data> 
    <artifacts> 
     <document id="efqw4eads"> 
      <name>composite</name> 
     </document> 
     <theme id="1"> 
      <name>Terrace</name> 
     </theme> 
     <theme id="2"> 
      <name>Garage</name> 
     </theme> 
     <theme id="3"> 
      <name>Reception</name> 
     </theme> 
     <theme id="4"> 
      <name>Grade II</name> 
     </theme> 
    </artifacts> 
</data> 

我有下面的代碼。返回方法的真實語句永遠不會執行。 answer始終包含空值。

public boolean themeExists(String name, Data data){ 
    String expression = "artifacts/theme[name='"+name+"']/name/text()"; 
    String answer = jaxbContext.getValueByXPath(data, expression, null, String.class); 
    if(answer == null || answer.equals("")){ 
     return false; 
    } 
    return true; 
} 
+1

你的XML被打破,收盤''錯過了'/'。我添加了它。 –

回答

1

沒有<artifacts/>元素你正在尋找在第一軸步驟。你的XPath表達式應該是這樣的

String expression = "data/theme[name='"+name+"']/name/text()"; 
+0

謝謝你指出。我添加了元素。它在原代碼中,但xpath仍然不起作用。 – waqas