Я хотел бы работать с некоторыми свойствами документа (которые находятся в xml) как с узлами, чтобы я мог работать с дочерними элементами. Пока у меня есть:
var counts = [];
for (var p of xdmp.documentProperties(uris)) {
var isANode = p instanceof Node; // false (actually true - see edit)
var count = xdmp.xqueryEval('fn:count(' + p + '//data)')
counts.push(count)
}
counts
Я видел примеры nodebuilder в документации MarkLogic и хотел бы использовать этот интерфейс. например
myNode.xpath('//data')
var children = myNode.childNodes()
Вместо оценки с использованием XPath есть ли способ преобразовать объект в узел? В качестве альтернативы, есть ли лучший способ работать с существующим XML в JavaScript на стороне сервера?
В XQuery я могу использовать xdmp:tranform-to-json()
, но эта функция не предусмотрена в SJS.
ИЗМЕНИТЬ:
Пытаясь предоставить чистый образец кода, я упустил важную информацию. У меня был мой код, структурированный следующим образом:
for (var uri of cts.uriMatch('/pattern/*')) {
var p = xdmp.documentProperties(uri);
var isANode = p instanceof Node; // false
// ...
}
вместо
for (var p of xdmp.documentProperties(cts.uriMatch('/pattern/*'))) {
var isANode = p instanceof Node; // true
// ...
}
Возвращаемый тип — это ValueIterator
, который эквивалентен последовательности XQuery и может быть доступен с помощью:
xdmp.documentProperties(uri).next().value