2010-09-01 45 views
0

你能幫忙嗎,我有一個基本的xml文件,它在html中很好地顯示。用xmlhttprequest在另一個xml文件中指定的xml文件中顯示xml數據

XML文件是這樣......除了<videoCaption>標籤內的數據

<videoList> 
     <video> 
      <pointer> 
       <type><![CDATA[image]]></type> 
       <lat><![CDATA[52.1]]></lat> 
       <long><![CDATA[1.0]]></long> 
      </pointer> 
      <speaker> 
       <firstName><![CDATA[Mr Car Dealer]]></firstName> 
       <town><![CDATA[]]></town> 
       <description><![CDATA[Car Dealer]]></description> 
       <longDescription><![CDATA[A car dealer selling BMW's and Audi's]]></longDescription> 
       <videoCaption><![CDATA[captions/bmw.xml]]></videoCaption> 
       <video><![CDATA[video/9ADA1C9.flv]]></video> 
       <story><![CDATA[]]></story> 
       <picture><![CDATA[images/bmw.jpg]]></picture> 
      </speaker> 
     </video> 

一切都顯示良好 - 此鏈接到另一個XML文件,它由以下...

<?xml version="1.0" encoding="utf-8"?> 
<tt xml:lang="en" xmlns="http://www.w3.org/2006/04/ttaf1" xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling"> 
    <head> 
    <styling> 
     <style id="1" tts:textAlign="right"/> 
     <style id="2" tts:color="transparent"/> 
     <style id="3" style="2" tts:backgroundColor="white"/> 
     <style id="4" style="2 3" tts:fontSize="10"/> 
    </styling> 
    </head> 
    <body> 
    <div xml:lang="en"> 
    <p begin="00:00:00.20" dur="00:00:02.00">My name is Mr Car.</p> 
    <p begin="00:00:02.30" dur="00:00:03.00">We offer original car parts.</p> 

</div> 
</body> 
</tt> 

我試圖做的沒有成功是顯示數據從第二個XML文件沿着相應的數據,在第一個XML文件中有大約10個條目,每個鏈接到一個單獨的XML文件在<videoCaption>標記中。

到目前爲止,我已經設法在iFrame中顯示第2個xml文件,但我無法使用css來設計它,也不適用於Firefox。

目前我使用Dreamweaver Spry方法在html中顯示數據。

我有一個很好的反響....

概括地說,我會通過一個XMLHttpRequest搶的 第二XML文件(假設其在同一 域),然後 將其插入定位DIV一個適當的 。

這種方式CSS樣式仍然是 可用,它似乎不是 當您使用iframe的情況。

什麼是與當前工作的HTML一起使用xmlhttprequest的最佳方式。我已成立了一個表來顯示XML和我已經包括XMLHttpRequest.js,但我有沒有喜悅從2文件顯示實際數據....

<table width="600" border="0" align="center" cellpadding="0" cellspacing="14" class="storyContainerBack"> 
<tr> 
    <td width="144" align="left" valign="top">{firstName}<br /> 
    {description}<br /> 
    <br /> 
     <img src="{picture}" width="80" height="80"/></td> 
      <td width="424" align="left" valign="top"><p class="storyTableTitle">{longDescription}</p> 
     <p class="storyTableCaption"> 
<script type="text/javascript"> 
var req = new XMLHttpRequest(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4 && (req.status == 200 || req.status == 304)) { alert(req.responseText); } }; req.open('GET', '{videoCaption}'); req.send(null); } 
    </script> 
</p> 
</td> 

如果任何人都可以對我如何顯示第二個xml文件的結果有所瞭解,這將非常棒。

感謝

回答

0

這可能工作(未經測試,所以也許一些小的語法問題),您將其置於TABLE標記:

function getVideoChild() { 
    var req = new XMLHttpRequest(); 
    req.open("GET", "whatever-file-name-is.xml"); 
    req.onload = function() { 

     var result = req.responseText; 
      // If you need to manipulate result, do it here, then this: 
     var target = document.getElementsByClassName('storyTableCaption')[0].innerHTML = result; 

    }; 
    req.send(); 
} 

我搬到這個標記之外的,因爲一個AJAX請求需要時間如此document.write(result);不會是一個好主意。

其次,爲XML提供周圍標記可能更容易一個ID,因此您不必執行getElementsByClassName事情並在結果數組中查找第一個結果。

最後,我不確定你是否搞亂了XML,使它顯示在你的網頁上,但如果你需要做任何事情,我已經指出了代碼註釋中的一個好地方。