我有一个 XML 文件,其中包含<?myinst contents ?>
. 如果可能的话,我需要使用单个 DOM 查询将它们全部放在一个集合中。如果不遍历所有树,这可能吗?
user1598585
问问题
1431 次
1 回答
0
您必须使用 xml-dom 遍历树。您指向的实现实际上甚至对 getElementByID 或其他选择器方法都使用了完全迭代。更好的实现将使用 tagName 和 id 缓存......如果您的目标是全层兼容性(浏览器和 nodejs 代码通用性),那么您根本没有其他选项,然后是基于递归的过滤器,就像这样。
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 来选择东西,但对于 PI,这可能是一种矫枉过正...... HTH
于 2012-10-23T15:23:32.510 回答