【问题标题】:Read php generated XML file with ajax & output to html using javascript使用 ajax 读取 php 生成的 XML 文件并使用 javascript 输出到 html
【发布时间】:2012-04-12 02:05:25
【问题描述】:

我有一个看起来是从 php(实时提要)生成的 XML 文件。基本上它包含我想要在 html 网页上进行对比和输出的数据。

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
Result for teamname VS Result for teamname2 团队名称 1 的 百分比 VS 团队名称 2 的 百分比

对于战斗 2 - teamname1 VS teamname3
Result for teamname 1 VS Result for teamname3 团队名称 1 的 百分比 VS 团队名称 3 的 百分比

专家级别
对于战斗 1 - teamname VS teamname2
Result for teamname 1 VS Result for teamname2 团队名称 1 的 百分比 VS 团队名称 2 的 百分比

我假设我需要使用 Ajax 来引入 xml 数据,然后使用某种形式的 javascript 来实现这一点,但我不知道从哪里开始。有谁知道我可以使用的任何参考资料或 jQuery 插件/方法,或许可以为我指明正确的方向?

非常感谢。

【问题讨论】:

  • XML 从何而来?它是用户输入还是您从服务器端的某个地方调用它?你在服务器端使用 PHP 吗?
  • @Quasdunk xml 来自 php 生成的提要,我假设提供给我的提要 URL 以 .php?locale=uk 结尾

标签: javascript jquery html xml ajax


【解决方案1】:

如果我是你,我肯定会调查 XSLT!

简而言之,XSLT 是 XML 数据的图形层,它将根据 XML 数据中的内容呈现类似于 HTML 的页面。互联网上有很多帮助,但作为快速入门,我想维基百科还不错:XSLT on Wikipedia

所以基本上,你有两个解决方案:

  • 如果服务器属于您,您可以应用您的 XSLT 样式表 直接在其上并使用 XHR 获得结果(由于潜在的跨浏览器问题,首选解决方案)
  • 如果您不使用服务器,请使用 XHR 下载您的 XML,然后使用 JS 和 XSLT 在客户端应用样式表。小心,我们的好老朋友 IE 需要它的好旧 ActiveX 来进行转换,至少上次我检查过。

祝你好运,别忘了每天做极客!

【讨论】:

  • 谢谢伙计,问题是我无法访问服务器,只有提要的 url,而且它每周更新一次,所以我需要直接从 url 提要中读取?跨度>
  • 这根本不是问题。下面是流程(全部在客户端实现): 1. 从服务器获取 XML 数据 2. 将 XML 数据加载到 DOMDocument 3. 创建一个 XSLT 处理器 4. 使用 XSLT 处理器转换您的 XML DOMDocument 5. 显示结果 6. 得到一个小吃、冰镇啤酒和炫耀,因为您一直在玩 XSLT!示例总是比待办事项列表更好:XSLT example。它展示了一些可以用 jQuery 增强的老式原生 JavaScript,但想法就在这里。祝你好运!
  • 嘿,伙计,谢谢!明天我会尝试一下,希望你能帮我解决我造成的混乱:)
  • 别担心!我会尽量关注线程。如果它适用于您的伴侣,请不要犹豫为其他人 +1 此解决方案。
【解决方案2】:

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);
        });
    });​   

【讨论】:

  • 感谢@andrew-edvalson 的快速回复,请原谅我,但我是 Javascript 和 jQuery 的新手,所以我不知道如何应用它,我已经简单地尝试过了但似乎无法立即弄清楚如何从团队名称中确定级别的名称。您还有什么可以提供的吗?
  • 好吧,似乎 jQuerys ParseXML 对我来说最有意义,我在这里找到了一个如何几乎实现此目标的示例 forum.jquery.com/topic/using-jquery-to-parse-xml-28-11-2010 - 谁能帮我用我的特定实时 XML 提要来实现这一点,我仍然迷路,虽然我担心答案正盯着我的脸?任何人,也许是@Andrew?
  • 我附上了一个非常基本的示例,您应该可以从中构建。这演示了如何从 xml 文件中提取数据并发出警报。我想你可以从那里拿走它?我不确定您是如何将 xml 放入 javascript 中的,我只是将其粘贴到 id="xmlspan" 的跨度中并从那里读取。
猜你喜欢
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
相关资源
最近更新 更多