4
我想使用一些文檔屬性(以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評估有沒有辦法將對象轉換爲節點?或者,有沒有更好的方法來處理服務器端JavaScript中的現有XML?
在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
基於意見:在做任何邏輯之前,我總是將我的xml解析爲json。如果你不喜歡使用xml,那麼讓生活變得更容易。 – Shilly
@Shilly:你是指數據庫還是迭代XML元素?你如何在JavaScript中將XML轉換爲JSON? – chriskelly
在使用前從服務器接收數據時。對於複雜的xml文檔,我只需遍歷所有子節點並將值保存在嵌套對象中。對於簡單的XML,我只是用正則表達式解析出相關的數據。 (不建議用於非簡單的xml)或者查看您的框架的插件。幾乎所有的人現在都有一些xml和json utils。 – Shilly