の形式で処理命令を含む 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 に答える