【问题标题】:Javascript handling an XML file处理 XML 文件的 Javascript
【发布时间】:2009-09-15 13:06:36
【问题描述】:

Javascript 能否直接处理通过 AJAX 请求的 xml 文件。我有一个服务器端 xml 文件,需要从此 xml 填充字段。我可以说'直接读取“xmlfile.xml”(在服务器上)',然后从收到的响应中提取 javascript 中的值并根据需要填充吗?可以的话可以举例说明吗?

【问题讨论】:

    标签: javascript ajax jsp


    【解决方案1】:

    如果你会使用 jQuery,你可以简单地执行一个XML AJAX call,然后用静态文件响应。

     <script type="application/javascript">
     $(function() {
         $('#get-xml a').click(function() {
             $.ajax({
                 type: "GET",
                 url: "xmlfile.xml",
                 dataType: "xml",
                 success: function(xml) {
                     $(xml).find('label').each(function(){
                         // your code. some example code bellow
                         var id_text = $(this).attr('id')
                         var name_text = $(this).find('name').text()
    
                         $('<li></li>')
                             .html(name_text + ' (' + id_text + ')')
                             .appendTo('#get-xml ol');
                     });
                 }
             });
         });
     });
     </script>
    

    小心点:

    注意:如果您指定下面描述的 dataType 选项,请确保服务器在响应中发送正确的 MIME 类型(例如,xml 作为“text/xml”)。发送错误的 MIME 类型可能会导致脚本出现意外问题。

    【讨论】:

    • @Stefan:这可能会更容易,但开发人员的便利性并不是唯一的考虑因素。这当然不是用户会关心的事情。这也不是拒绝我的答案的理由。
    • 我对我认为值得考虑的答案投了赞成票,对我认为值得考虑的答案投了反对票。如果更多人使用 jQuery,当您链接到 google 的 ajax 代码仓库时,更多用户将获得缓存命中。此外,如果您正在处理大量数据,例如过于冗长的 xml 文件,则 javascript 不是问题。你也不在你的网站上使用图片吗?任何大小合理的图片都将超过 jQuery 库大小的 4 倍。
    • 您的论点可以追溯到早期网络的论点;不应使用图像,所有代码都应针对速度进行优化。 gzip 压缩、构建缩小和宽带的广泛采用使这些问题变得微不足道,甚至有害。是的,我认为尝试支持 IE6 是错误的和落后的,是的,我相信 jQuery(或其他库)应该抽象出过去的痛苦。我有合理的论据,但我会把剩下的放在一边。如果您想反驳我的观点或进一步描述您的立场,请写一篇博客文章,我会阅读并发表评论。证明我错了。
    • 这里有两个独立的参数:第一,网站是否应该支持 IE 6,对此我没有发表评论;第二,是否应该为每个脚本任务使用 jQuery 或类似的,不管多么小。由于我们还没有讨论第一点,所以我将把它放在这里。至于第二点,您是主张对所有浏览器脚本任务使用特定工具或工具类型的人,所以我想说举证责任在您身上。
    • @Stefan:你最近的两个 cmets 中的第一个,我的回答是完全有效的。问题中没有询问 jQuery,选择使用 jQuery 是您应该做出明智决定的事情。说 jQuery 是实现 OP 想要的唯一方法显然是错误的;说这是最好的方法是主观的,而在没有 jQuery 的情况下,你的否决票所代表的否定是教条和盲目的。关于图像大小的论点是无关紧要的,而且是错误的:您所说的图像类型至少为 76K,而且我认为这超出了合理的大小。
    【解决方案2】:

    是的。 XMLHttpRequest 有一个responseXML 属性(以通常的方式完成请求后填充),它是对 XML 文档的引用。它具有您在 HTML 文档中获得的所有常用 DOM 方法和属性。你不需要 50K 的 jQuery 来实现这个。

    【讨论】:

    【解决方案3】:

    按照 SO 的标准,我建议使用 jQuery!

    var myUrl = 'http://somesite.com/foo.xml';
    
    function myXmlHandler(data){
        // do stuff with data, which is the contents of foo.xml
    }
    
    $.get(myUrl,{},myXmlHandler);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多