2010-09-01 56 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,使它显示在你的网页上,但如果你需要做任何事情,我已经指出了代码注释中的一个好地方。

相关问题