Oracle - Berkeley DB XML Java API - запрос XML для получения значений атрибутов на нескольких уровнях
Оценка Беркли БД с помощью API Java. Ниже приведен один из моих тестовых данных XML:
<master>
<env name="development">
<server name="tomcat1" ip="122.122.123.1">
<domain name="domain1">
<application name="GreatApplication1" status="enabled"/>
</domain>
<domain name="domain2">
<application name="GreatApplication2" status="enabled"/>
<application name="NotSoGreatApplication2" status="disabled"/>
<application name="GreatApplication3" status="enabled"/>
</domain>
</server>
</env>
</master>
С помощью следующего запроса String я могу запрашивать приложения и их статус на любом "домене" для любого "сервера": (при условии, что envs.dbxml - это моя база данных Xml)
collection('envs.dbxml')/master/env[@name=$name]/server/domain/application/@*/string()
Я хочу иметь возможность получать имена отдельных серверов, когда этот запрос возвращает результаты. Как это может быть достигнуто? Этот запрос просто возвращает все приложения и значения состояния одно за другим.
1 ответ
Используйте:
(
/master/env[@name=$name]/server/@name
|
/master/env[@name=$name]/server/domain/application/@*
)
/string(.)
Или это более короткая форма:
/master/env[@name=$name]/server/(@name|domain/application/@*)/string(.)
Пояснение: здесь мы используем XPath |
(объединение) оператор и синтаксис XPath 2.0, который допускает выражения вида: expr/(expr)
и выражения рода expr/func(argList)