如何使用jQuery读取和解析页面内存在的XML

时间:2011-04-26 21:35:38

标签: jquery html xml

我有一个xml文件,我在我的html页面中导入了这样的文件:

<script type="text/xml" src="Categories.xml" id="categoriesXML">  
</script>

使用我的jQuery代码我想读取这个xml文件并解析它用它的数据做一些事情,所以我试着写这样的东西:

 var xml = $('#categoriesXML').text();
    $(xml).find("Category").each(function () {
        alert($(this).find("Title").text());
    });

但我得到的是xml变量为空。

我也试着写下来:

var xml = $('#categoriesXML');

但我又无法让它发挥作用。

xml文件内容:

<?xml version="1.0" encoding="utf-8" ?>
<Categories>
  <Category>
    <Title>CAT1</Title>
    <SubCategories>
      <SubCategory>
        <Title>SUB1</Title>
      </SubCategory>
    </SubCategories>
  </Category>
</Categories>

那么如何以这种方式阅读这个xml文件,而不使用ajax

为什么我想要没有ajax:
因为我希望在页面加载时发生这种情况,并且在我的页面加载后不需要开始获取文件,这将在第一次加载时显示我的页面几乎为空,并且将等到文件的ajax响应可能非常大有些情况。

4 个答案:

答案 0 :(得分:1)

我认为您需要使用AJAX加载XML 这是summary的方法

答案 1 :(得分:1)

我认为它不会那样工作,你应该通过ajax加载document.ready并开始处理它。

在document.ready

中进行ajax调用
$(document).ready(function() {

   // make ajax call and populate xml and process the xml.


});

答案 2 :(得分:1)

使用页面顶部的同步AJAX请求来填充JavaScript变量。它将模仿内联XML。

答案 3 :(得分:0)

我会编写一些服务器端代码来直接在页面上呈现xml内容,就像在此示例中一样:http://jsfiddle.net/Cq8Fu/并且它会起作用,因为使用外部文件它将无法工作并且作为@ Capsule在上面的评论中说,加载文件会有延迟,这种工作没用,也不会节省时间。

顺便说一下,这个样本我是从某人回答的答案中得到的,但他后来删除了他的答案“不知道为什么”。