2012-05-09 14 views
0

私は、jQueryを使用する一連のXMLファイルから情報を解析し抽出するためのライブラリを作成しました。だから、このようなことを行うにはかなり簡単です:Sizzleを使用してXMLファイルを解析しますか?

$xml = $($.parseXML(xmlText)) 
title = $xml.find(".title>longName").text() 

私はその後、私の小さなライブラリはjQueryのすべての依存を必要としないことを認識し、私はおそらく、私はちょうどシズルライブラリを使用して欲しかったものを手に入れることができると、これはjQueryの.findメソッドの由来です。しかし、私はゲートのすぐ外にトラブルがあります。

シズルはparseXML機能を備えていないようです。 XMLテキストの塊を渡し、検索可能なオブジェクトを取得する方法はありますか?

シズルの検索機能にコンテキストを渡すことができることに気付きました。しかし、Sizzle.find( "。title"、xmlText)は何も見つけられませんでした。

アイデア?上記のjQueryを使用していたのと同じ方法でSizzleを使用してXMLを解析できますか?

注:これはヘッドレスまたはNodeで実行できるようにしたいので、DOMParserのようなブラウザの依存関係を使用しないことをお勧めします。

+0

を私は独立 'sizzle'を使用していないが、あなただけの' $(XMLTEXTを) '行うことはできませんか? –

答えて

2

あなたはjQueryのからparseXMLを使用することができます。

function parseXML(data) { 
    if (typeof data !== "string" || !data) { 
     return null; 
    } 
    var xml, tmp; 
    try { 
     if (window.DOMParser) { // Standard 
      tmp = new DOMParser(); 
      xml = tmp.parseFromString(data , "text/xml"); 
     } else { // IE 
      xml = new ActiveXObject("Microsoft.XMLDOM"); 
      xml.async = "false"; 
      xml.loadXML(data); 
     } 
    } catch(e) { 
     xml = undefined; 
    } 
    if (!xml || !xml.documentElement || xml.getElementsByTagName("parsererror").length) { 
     throw new Error("Invalid XML: " + data); 
    } 
    return xml; 
} 
+0

私はソースコードを調べて、これがjQueryがどのように処理していたかを認識していました。もちろん、これはDOMParser(またはActiveX ...)を必要とするので、私のヘッドレスやノードの設定でいくつかのブラウザ環境(env.js?)を実行する必要があります。これは避けようとしています...しかし、これはおそらくまだ最も簡単なオプション –

+0

@SamFenあなたは3番目のオプションを追加するためにそれを修正することができます(いくつかのノードxmlライブラリ) – Esailija

関連する問題