2012-03-28 20 views
1

我有一個XML文件,看起來是從PHP(實時提要)生成。基本上它包含我想要在html網頁上輸出的數據和比較輸出。閱讀PHP生成的XML文件與AJAX&輸出到HTML使用javascript

的XML飼料是這樣的:

<feeds> 
    <level id="999991000" name="Premier level"> 
     <group name="mix"> 
      <battles> 
       <battle> 
        <supplier id="3000000" name="Stongteam" result="190" percentage="64%"/> 
        <supplier id="3000222" name="Blackteam" result="109" percentage="36%"/> 
       </battle> 
       <battle> 
        <supplier id="3000000" name="Strongteam" result="198" percentage="66%"/> 
        <supplier id="3000111" name="Redteam" result="101" percentage="34%"/> 
       </battle> 
      </battles> 
     </group> 
    </level> 
    <level id="9999922222" name="Expert level"> 
     <group name="mix"> 
      <battles> 
       <battle> 
        <supplier id="3000000" name="Stongteam" result="178" percentage="73%"/> 
        <supplier id="3000222" name="Blackteam" result="65" percentage="27%"/> 
       </battle> 
       <battle> 
        <supplier id="3000000" name="Strongteam" result="173" percentage="71%"/> 
        <supplier id="3000111" name="Redteam" result="70" percentage="29%"/> 
       </battle> 
      </battles> 
     </group> 
    </level> 
</feeds> 

基本上,我需要從該文件顯示了一些東西,例如。

總理級
戰鬥1 - teamname1 VS teamname2
結果爲teamname 1 VS 結果爲teamname2 百分比爲teamname 1 VS 百分比爲teamname2

戰鬥2 - teamname1 VS teamname3
結果爲teamname 1 VS 結果爲teamname3 百分比爲teamname 1 VS 百分比爲teamname3

專家級
戰鬥1 - teamname VS teamname2
結果爲teamname 1 VS 結果爲teamname2 百分比爲teamname 1 VS 百分比爲teamname2

我想我需要使用Ajax的XML數據帶來,然後某種形式的javascript爲了達到這個目的,儘管我很困惑從哪裏開始。有誰知道任何引用或jQuery插件/方法我可以使用,也許可以指出我在正確的方向嗎?

非常感謝。

+0

XML從哪裏來?它是用戶輸入還是你從服務器端的某個地方調用它?你在服務器端使用PHP嗎? – Quasdunk 2012-03-28 13:16:54

+0

@Quasdunk xml來自一個由php生成的feed我假設給定的feed給我的結尾是.php?locale = uk – James 2012-03-28 13:50:22

回答

0

jQuery的parseXML可能會做出這樣一件輕而易舉的事:http://api.jquery.com/jQuery.parseXML/

var xml = $('#xmlspan').html(); 
var xmlDoc = $.parseXML(xml); 
var $xml = $(xmlDoc); 

$xml.find("level").each(function() { 
    var tiername = $(this).attr("name"); 
    alert (tiername); 
    $(this).find("battle").each(function() { 
     team1 = $(this).find("supplier:eq(0)").attr("name"); 
     team2 = $(this).find("supplier:eq(1)").attr("name"); 
     alert(team1 + ' - ' + team2); 
     }); 
    });​ 
+0

感謝@ andrew-edvalson爲您的快速響應,您將不得不原諒我,但我是在Javascript和jQuery上的一個完整的新手,所以我不知道如何應用這個,我已經簡單地嘗試過,但似乎無法弄清楚如何即時確定團隊的名稱水平的名稱。你還有什麼可以提供的嗎? – James 2012-03-28 13:42:57

+0

這是否可以通過閱讀現場網址Feed來實現? – James 2012-03-28 14:15:48

+0

好吧,似乎jQuerys ParseXML會對我最有意義,我已經找到了一個如何幾乎實現這個例子http://forum.jquery.com/topic/using-jquery-to-parse-xml-28-11 -2010 - 任何人都可以幫助我用我特殊的XML feed來實現這一點,但我仍然迷失了方向,儘管我害怕答案正在我的臉上凝視着我?任何人,也許@Andrew? – James 2012-03-29 23:55:14

0

我肯定會調查XSLT如果我是你!

簡而言之,XSLT是XML數據的圖形層,它將根據XML數據中的內容呈現HTML頁面。互聯網上有很多幫助,但作爲一個快速入門,我想維基百科並不算太壞:XSLT on Wikipedia

所以基本上,你有兩個解決方案:

  • 如果服務器屬於你,你可以在上面直接應用XSLT樣式表 和使用,因爲潛在的跨瀏覽器的XHR(首選的解決方案得到的結果問題)
  • 如果您在服務器上沒有手,請使用XHR下載您的XML並使用JS和XSLT在客戶端應用樣式表。小心,我們的好老朋友IE需要它很好的舊ActiveX來進行轉換,上次我至少檢查過。

祝你好運,不要忘了每天都要瘋狂!

+0

謝謝隊友,問題是我沒有訪問服務器只有飼料的網址,它每週更新,所以我將需要直接從url Feed中讀取我假設? – James 2012-03-28 13:52:38

+0

這根本不是問題。這裏是流程(它全部在客戶端實現): ** 1。**從服務器獲取XML數據 ** 2。**將XML數據加載到DOMDocument中 ** 3。**創建一個XSLT處理器 ** 4.使用XSLT處理器轉換您的XML DOMDocument ** 5.顯示結果 ** 6.獲取點心,冷啤酒和炫耀,因爲您已經一直在玩XSLT! 示例總是比待辦事項列表更好:[XSLT示例](http://www.w3schools.com/xsl/xsl_client.asp)。它顯示了一些很好的舊香草JavaScript,你可以用jQuery加強,但這個想法就在這裏。祝你好運! – Zaziffic 2012-03-28 14:08:59

+0

嘿,隊友謝謝!我明天會去參加這個活動,希望你能幫我解決我製造的混亂問題:) – James 2012-03-28 14:14:56