2016-08-15 113 views
1

我試圖去字串值的內容,其中比較有VALUE = item.auxiliaryData.productRef.brandName,如何檢查元素是否有一個元素沒有移動到它

我試着使用下面的代碼,

XPathExpression expr = xpath.compile 
       ("//comparator[contains(VALUE,'item.auxiliaryData.productRef.ancestorCategoryIds')]//STRING-VALUE"); 
     productRefs = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); 

這就是我試圖解析

    <comparator NAME="equals"> 
         <VALUE>item.auxiliaryData.productRef.brandName</VALUE> 
         <CONSTANT> 
          <DATA-TYPE>java.lang.STRING</DATA-TYPE> 
          <STRING-VALUE>Ariat</STRING-VALUE> 
         </CONSTANT> 
        </comparator> 
        <comparator NAME="equals"> 
         <VALUE>item.auxiliaryData.productRef.ID</VALUE> 
         <CONSTANT> 
          <DATA-TYPE>java.util.Collection</DATA-TYPE> 
          <STRING-VALUE>84332</STRING-VALUE> 
          <STRING-VALUE>79904</STRING-VALUE> 
          <STRING-VALUE>82203</STRING-VALUE> 
         </CONSTANT> 
        </comparator> 
+1

好的。你有什麼? – SomeDude

+0

您正在使用'contains(X,Y)',您可能希望'X = Y'。這是一個常見的錯誤:人們認爲「節點包含價值」。但'contains()'測試一個子字符串,並且更加昂貴:'contains( foxy,'xy')'是真的。但是,我懷疑這是你問題的原因。 –

回答

1

此XPath,

string(//comparator[VALUE='item.auxiliaryData.productRef.brandName']//STRING-VALUE) 

將返回"Ariat"直接的要求。

0

你的XPath需要加以糾正:

//comparator[contains(VALUE,'item.auxiliaryData.productRef.brandName')]//STRING-VALUE

您使用item.auxiliaryData.productRef.ancestorCategoryIds

相關問題