1

の形式で処理命令を含む XML ファイルがあります<?myinst contents ?>。可能であれば、単一の DOM クエリを使用して、コレクション内のすべてを取得する必要があります。これは、すべてのツリーを反復処理しなくても可能ですか?

4

1 に答える 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 に答える