#xquery #marklogic
#xquery #marklogic
Вопрос:
Я хочу последовательно прочитать XML в xquery (MarkLogic DB), чтобы определить начальный и конечный теги. Доступно ли в xquery средство чтения stream, подобное Java XMLStreamReader
?
Комментарии:
1. Нет, это не так: XQuery работает с древовидной моделью данных, созданной анализатором XML, а не с необработанным лексическим источником XML. Но если вы объясните, чего вы на самом деле пытаетесь достичь, то я уверен, что мы сможем помочь вам найти способ.
2. Моя цель — найти все начальные и конечные элементы. Когда я сталкиваюсь с начальным элементом, мне нужно выполнить некоторую логику, аналогично для конечного элемента.
3. Если вы имеете в виду теги start и end, то это не стартер. XQuery не видит теги, он видит узлы.
Ответ №1:
Добро пожаловать, Эш,
В XQuery нет функции, аналогичной Java XMLStreamReader. Функция DOC () в XQuery считывает xml-документ, но не считывает последовательно автоматически, для этого вам нужно использовать приведенный ниже запрос:
let $result :=
for $x in fn:doc()
let $first-element :=name($x/*/*[1])
let $last-element :=name($x/*/*[last()])
return fn:concat("First Element: ", "'", $first-element, "'", " Second element: ", "'", $last-element, "'")
return $result