2016-10-17 6 views
1

私はXQueryを使用して、次のJava方法があります。私は現在、唯一つのパラメータ、すなわちnameを使用して照会しています見ることができるようにXQueryで複数のパラメータを使用していますか?

public String getLocationByName(String name) { 
      final String nameToQueryFor = name; 
      return engine.new Query<String>(MY_COLLECTION) { 

       @Override 
       protected String query(Collection collection) throws Exception { 
        XQueryService service = queryService(); 

        ResourceSet resourceSet = service.query(
          format("//Products/Product[name='%s']" + 
              "/attribute" 
            , StringEscapeUtils.escapeXml(nameToQueryFor) 
          )); 

        List<String> results = newArrayList(); 

        for (String resource : new IterableStringResources(resourceSet)) { 
         results.add(resource); 
        } 
        return results.get(0); 
       } 
      }.execute(); 
     } 

を。ただ、例えば、あなたのXPath、に条件が含ま

public String getLocationByNameAndPrice(String name) 
+0

http://exist-db.org/api/org/exist/xmldb/XQueryService.html#declareVariable(java.lang.String,%20java.lang.Object)を使用する方が、より安全で簡単な場合があります。 )を使用してクエリの変数を設定し、文字列の書式設定と連結の代わりに '// Products/Product [name = $ name]'を使用できるようにします。 –

答えて

1

price

私の方法は、今になってしまう:

私は、このXQueryは追加のパラメータを取るように変更することができますどのように、XQueryの持つ初心者です:

format("//Products/Product[name='%s' and price='%s']/attribute", 
    StringEscapeUtils.escapeXml(nameToQueryFor), 
    StringEscapeUtils.escapeXml(priceToQueryFor)) 

正確なクエリの構文は、XMLドキュメントによって異なります。

+0

はうまくいきました – java123999

関連する問題