通过Saxon-JS序列迭代

时间:2018-03-12 04:49:54

标签: javascript saxon-js

这个javascript(托管在浏览器控制台上)......

var xmlDoc = jQuery.parseXML("<foo>Stuff</foo>");
for (let item of SaxonJS.XPath.evaluate( '/foo/text()', xmlDoc,
                 {resultForm:'iterator'})) {console.log(item);}

...返回错误...

SaxonJS.XPath.evaluate(...) is not a function or its return value is not iterable

...而不是预期的输出...

"Stuff"

为什么吗

根据documentation here,evaluate()表达式应该返回一个迭代器。但事实并非如此。

使用的库包括:

  1. 的jQuery;和
  2. Saxon-js javascript library。
  3. 更新

    我可以通过这个替代表达式获得功能正确的结果...

    for (let item of SaxonJS.XPath.evaluate('string(foo/text())',xmlDoc, 
      {resultForm:'array'})) {console.log(item)}
    

    ...但我真的想使用一个惰性迭代器,如果可能的话,而不是一个数组。

1 个答案:

答案 0 :(得分:0)

好吧,我认为我只是调用迭代器错了。这有效......

SaxonJS.XPath.evaluate( '/foo/text()', xmlDoc,
  {resultForm:'iterator'}).forEachItem( function( node){
    console.log( node)})