通过 Saxon-JS 序列进行迭代
Iteration through a Saxon-JS sequence
此 javascript(托管在浏览器控制台上)...
var xmlDoc = jQuery.parseXML("<foo>Stuff</foo>");
for (let item of SaxonJS.XPath.evaluate( '/foo/text()', xmlDoc,
{resultForm:'iterator'})) {console.log(item);}
...return错误...
SaxonJS.XPath.evaluate(...) is not a function or its return value is not iterable
...而不是预期的输出...
"Stuff"
为什么?
根据documentation here,evaluate() 表达式应该return 一个迭代器。但事实并非如此。
使用的库包括:
- jQuery;和
- Saxon-js javascript 图书馆.
更新
我可以用这个替代表达式得到功能上正确的结果...
for (let item of SaxonJS.XPath.evaluate('string(foo/text())',xmlDoc,
{resultForm:'array'})) {console.log(item)}
...但我真的想使用惰性迭代器,如果可能的话,而不是数组。
好吧,我想我只是错误地调用了迭代器。这有效...
SaxonJS.XPath.evaluate( '/foo/text()', xmlDoc,
{resultForm:'iterator'}).forEachItem( function( node){
console.log( node)})
此 javascript(托管在浏览器控制台上)...
var xmlDoc = jQuery.parseXML("<foo>Stuff</foo>");
for (let item of SaxonJS.XPath.evaluate( '/foo/text()', xmlDoc,
{resultForm:'iterator'})) {console.log(item);}
...return错误...
SaxonJS.XPath.evaluate(...) is not a function or its return value is not iterable
...而不是预期的输出...
"Stuff"
为什么?
根据documentation here,evaluate() 表达式应该return 一个迭代器。但事实并非如此。
使用的库包括:
- jQuery;和
- Saxon-js javascript 图书馆.
更新
我可以用这个替代表达式得到功能上正确的结果...
for (let item of SaxonJS.XPath.evaluate('string(foo/text())',xmlDoc,
{resultForm:'array'})) {console.log(item)}
...但我真的想使用惰性迭代器,如果可能的话,而不是数组。
好吧,我想我只是错误地调用了迭代器。这有效...
SaxonJS.XPath.evaluate( '/foo/text()', xmlDoc,
{resultForm:'iterator'}).forEachItem( function( node){
console.log( node)})