2017-01-31 17 views
0

私は現在、Webページを生成するためにXMLファイルから情報を読み取る必要がある小さなアプリケーションを作成しています。xmlファイルから結果をソートする

私は1つのパラメータ(mood = String)をとるJavaScript関数を持っています。

<program id="10"> 
     <name>Foo</name> 
     <mood>Bar</mood> 
     <image>/program-images/file-name.123</image> 
    </program> 

のxml:

if (window.XMLHttpRequest) { 
    xhttp = new XMLHttpRequest(); 
} else { // IE 5/6 
    xhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

xhttp.open("GET", "programme_catalog.xml", false); 
xhttp.send(); 
xmlDoc = xhttp.responseXML; 

function getContent(mood) { 
    $(xmlDoc).find("program").each(function(){ 
      if ($(this).find('mood').text() == mood) { 
      $("#sky-recommender").append(
       '<div id=\'program-holder\'> <div id=\'program-cover\'><img height="130px" width="188px" src=\"' + $(this).find('image').text() + '\" /> </div> <div id=\'program-title\'><p>' + $(this).find('name').text() + 
       '</p></div></div>' 
       ); 
      } 
     }); 
} 

私のxmlファイル内のエントリを:関数は、xmlファイルを見て、気分パラメータに対応するすべての「プログラム」を返すのXMLHttpRequestからresponseTextを使用していますファイルは同じ気分で多くの項目で構成できますが、getContent関数はプログラムIDでソートされた5つの結果だけを昇順で返すようにしたいと考えています。

私はgetContent()のコンテンツの周りにforループを置くことができると推測していますが、正しく並べ替える方法がわかりません。

私はいくつかの情報を忘れてしまったかどうか、何か助けていただければ幸いです。

感謝:)

+0

(s)はあなたのXPATHを実行する前に、XML応答をソートしたいのでしょうか?または、それらをすべてフェッチして並べ替え、最初の5つを選択したいですか?どちらの場合でも、配列の並べ替えは非常に簡単です:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort –

+0

私はそれらをすべて取り出し、並べ替えています、最も高いID(最も新しい)から始まる5を選択してください –

+0

私は配列を使用することを考えていましたが、私は各結果から1文字列を取得するだけではありません。私は得ています、、

答えて

0

あなたはおそらくこれを行うために、XPathを活用できます。

... 
xhttp.open("GET", "programme_catalog.xml", false); 
xhttp.send(); 
xmlDoc = xhttp.responseXML; 

var nsResolver = xmlDoc.createNSResolver(xmlDoc.ownerDocument == null ? xmlDoc.documentElement : xmlDoc.ownerDocument.documentElement); 

var pageStart = 0; 
var pageEnd = 5; 
var personIterator = xmlDoc.evaluate('//program[./mood[.='Bar'] and position() >= ' + pageStart + ' and position() <= ' + pageEnd, xmlDoc, nsResolver, XPathResult.ANY_TYPE, null); 

注意 'ページ' これらの結果にtrickiness。最も効率的または最速のソリューションではないかもしれません。

あなたはソートに何をしたいのですか?あなたが得た5つの結果は?または、完全な文書を並べ替える?あなたはXPATHため'//program[./mood[.='Bar']'と外のオブジェクトのすべてを引き出し、その後、より多くの思考の際に配列

結果としてノードを並べ替えることができ

、あなたはおそらく、XSLTでなんとかです文書全体を、ソートしたいです、それはあなたのプロジェクトの範囲外である可能性がありますquestion/answer here。あなたが文書の最初の5つを取得し、それらをソートしたいかMore here

関連する問題