是否有可能从DOM获取所有处理指令元素

我有一个包含<?myinst contents ?>forms的处理指令的XML文件。 如果可能的话,我需要在一个集合中使用单个DOM查询来获取它们。 这可能没有迭代所有的树?

您必须用xml-dom遍历树。 你指出的实现实际上使用完整的迭代,甚至getElementByID,或其他select器方法。 更好的实现将使用tagName和idcaching…如果你的目标是全层兼容性(浏览器和nodejs代码的共同性),你根本没有其他select,那么基于recursion的filter,就像这样。

 function _visitNode(node,callback){ if(callback(node)){ return true; } if(node = node.firstChild){ do{ if(_visitNode(node,callback)){return true} }while(node=node.nextSibling) } } function getPIs(rootNode){ var ls = []; _visitNode(rootNode, function(node){ if(node !== rootNode && node.nodeType == 7) { ls.push(node); return true; } }); return ls; } 

我们使用libxmljs和xslt来select东西,但只是对于PI可能是一个矫枉过正的… HTH

Interesting Posts