使用javascript和原型1.7解析XML数据时遇到问题

时间:2011-02-16 22:05:22

标签: xml ajax prototypejs javascript

我有一个与AJAX,XML和Prototype相关的基本问题。

我正在尝试解析此XML文档:

<?xml version="1.0" encoding="utf-8"?>
  <NavigationData>
    <OrderOfCategories>
      <CategoryName Num="1">location</CategoryName>
      <CategoryName Num="2">real_estate</CategoryName>
      <CategoryName Num="3">services</CategoryName>
      <CategoryName Num="4">learning</CategoryName>
      <CategoryName Num="5">automobile</CategoryName>
      <CategoryName Num="6">personals</CategoryName>
      <CategoryName Num="7">community</CategoryName>
      <CategoryName Num="8">for_sale</CategoryName>
      <CategoryName Num="9">classifides</CategoryName>
    </OrderOfCategories>
  </NavigationData>

使用此javascript代码(例如):

function createNav (response)   {

  var xmlData = response.responseXML.documentElement.getElementsByTagName("CategoryName")[1].childNode[0].nodeValue;

  window.alert(xmlData);

 }
 // end of FUNCTION createNav

 function loadNav ()    {

     new Ajax.Request("http://www.listedcities.com/listings/geo_templates/freshstart/external/xml/global_data.xml",
              {
                method: 'get',
                                contentType: 'text/xml', 
                onSuccess: createNav,
                onFailure: function () { window.alert("failed") }
              });
 }

函数loadNav加载XML文件并将其传递给另一个要解析的函数。原因是应用程序加载多个xml文件而不是一个大文件,较小的XML文件的文件名存储在'global_data.xml'XML文件中。

我遇到这个代码的问题是警报传递'null'值,或者在某些情况下根本不会触发任何内容。

我希望通过'global_data.xml'文件中的第一个节点值来触发警报。

对于这些部分,我们非常感谢任何帮助。

小心。

1 个答案:

答案 0 :(得分:0)

我设法破解了这个问题,以获得有效的代码:

var xmlData = response.responseXML.documentElement.getElementsByTagName("CategoryName")[1].childNodes[0].nodeValue;

我需要额外的

childNodes[x] 

在那里引用。