多个XML与数据链接?

时间:2009-08-16 15:13:08

标签: jquery xml ajax

我不确定这是否可行,我正在开发一个我无法访问任何类型的MYSQL或数据库的网站。也不是任何PHP。便宜的客户

无论我有3个包含不同数据部分的XML文件,我都放置了一个相互匹配的“密钥”。我相信一个简单的IF语句会进行匹配。

然而,调用3个XML文件并从所有文件中提取数据的最佳方法是什么,并将它们组合成一个循环。

以下是用于拉取其中一个的代码:

 $.ajax({
  type: "GET",
  url: "xml/classes.xml",
  dataType: "XML",
  beforeSend: function(){
    $('#classContainer').append("<p>Loading</p>");},
  success: function(xml) {
    $(xml).find('monday').each(function(){

            var $classdate = $(this); 
            var title = $classdate.find("class").attr('title');

            var level = $classdate.find("class").attr('classLevel');
                var time = $classdate.find("time").text();
                var duration = $classdate.find("time").attr("duration");
                var hourofday = $classdate.find("time").attr("hourofday");
                var location = $classdate.find("location").text();



            var Monhtml = '<div class="classBlock">';

            Monhtml += '<p class="title">' + title + '<span class="loadingPic" alt="Loading" /> ' + ' </p>';
                Monhtml += '<p class="infoBar"> <strong>Time:</strong>' + time + '<span class="hour">'+ hourofday +'</span><br>'+'<strong>Duration:</strong>' + duration +' Minutes <br>' + '<strong>Location:</strong>' + location + '<br><strong>Instructor:</strong> </p>';
                Monhtml += '<p class="description">  <span class="level">' +  level  + '</span></p>' ;

            Monhtml += '</div>';


            $('#classContainer').append($(Monhtml));
        });
        }
    }); 

我想创建一个放在“monHTML”中的变量我将从3个XML文档中将一组变量全部合并到“monHTML”变量中。

任何想法“?

2 个答案:

答案 0 :(得分:1)

由于您无法合并服务器上的文件,因此您需要执行3个独立的Ajax请求。困难在于同步3个请求。它们可以同步执行,但这肯定会损害性能并可能导致超时。更好的方法是异步发送3个请求,并在3个请求完成后调用回调:

var addreses = ['xml/file1.xml', 'xml/file2.xml', 'xml/file3.xml'];

var ajaxQueue = {
    files         : [],
    checkFinished : function() {
        if (this.files.length == addresses.length) {
            // You can work with the 3 xml files here...
            // this.files will be an array of elements that contain
            // url and xml parameters. Check the url parameter to identify the 
            // corresponding xml. 
            // Remark: as the order in which the requests finish can vary, the array
            // will not be sorted.
        }
    };
};

$(addreses).each(function(index, address) {
    $.ajax({
        url      : address,
        dataType : 'xml',
        success  : function(data) {
            ajaxQueue.files.push({ url: address, xml: data });
            ajaxQueue.checkFinished();
        }
    });
});

答案 1 :(得分:0)

您的客户端可能能够负担本机xml数据库。有几个是免费且好的 - eXist-org。是一个开始的地方。然后,您可以使用XQuery更轻松地解决此问题。