Xquery: возвращает несколько элементов данных с помощью Java?

#java #xml #xpath #xquery

#java #xml #xpath #xquery

Вопрос:

У меня есть следующее xml :

 <Products>
    <Product>
        <name>Sample name</name>
        <attribute id="sampleid" location="sampleLocation" type="sampleType"/>
        <price>12345</price> 
    </product>
</Products> 
 

Как я могу вернуть следующие данные из этого XML для заданного имени (всегда уникального):

 1. location (e.g. "sampleLocation")
2. type (e.g. "sampleType")
3. price (e.g. 12345
 

В настоящее время я могу запрашивать каждый из них по отдельности для возврата значений, но я не уверен в синтаксисе для возврата нескольких значений вместе.

Пример отдельного запроса для определения местоположения:

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

Приведенный выше запрос вернет: «SampleLocation».

Комментарии:

1. Какой процессор XQuery и какой API вы используете?

Ответ №1:

Следующий запрос возвращает последовательность из трех строк:

 /Products/Product/(string(attribute/@location), string(attribute/@type), string(price)) 
 

Как вернуть последовательность из трех строк в ваше Java-приложение, зависит от используемого вами процессора XQuery и API, о которых вы нам не сообщили.