2012-01-13 9 views
0

Как получить значение моих данных xml с помощью javascript. Im доступ к моему XML-файлу в моем домене и просмотр его на стороне клиента.Доступ к данным XML через javascript

my.xml

<usr> 
    <uid trk="1234"> 
    <getThis>kdzbnya</getThis> 
    </uid> 
</usr> 

Я хочу, чтобы получить значение "getThis"

sample.js

function alertThis(){ 
     var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     var xmlFile = "my.xml"; 
     xmlDoc.async="false"; 
     xmlDoc.load(xmlFile); 
     xmlObj=xmlDoc.documentElement; 
     try { 
      var v = ""; 
      $.each(xmlObj.childNodes, function(i, valThis) { 
       if(valThis.getAttribute("trk") == "1234"){ 
        v += valThis.getElementsByTagName('getThis').nodeValue; 
       } 
      }); 
      alert(v); 
     } 
     catch(e){ 
      alert(e); 
     } 
} 

но он возвращает неопределенное значение.

+0

вы знаете, это не будет работать в Firefox, не так ли? – dbrin

+0

@DmitryB yes, activexObject, который вы имеете в виду, но я только работаю над этим в IE, потому что это для гаджета Windows 7. –

ответ

1

Я вижу, вы используете jQuery.

изменение

v += valThis.getElementsByTagName('getThis').nodeValue 

в

v += $(valThis).find('getThis').text() 
+0

Да, спасибо! Оно работает. Да, я должен использовать jquery, потому что мне нужно найти множество данных. –

0

См. Этот пример http://www.w3schools.com/xml/xml_parser.asp анализатора XML. Но на самом деле вы, вероятно, захотите использовать фреймворк для загрузки XML и его анализа. Их там много, проверьте на microjs.com те функции, которые вы ищете.

2

Попробуйте добавить .item(0) или [0] между getElementsByTagName(...) и .nodeValue:

v += valThis.getElementsByTagName('getThis').item(0).nodeValue; 

Вы будете нуждаться в этом, как getElementsByTagName возвращает NodeList (который может напоминать Array). В списке не будет самого nodeValue property, но узлы внутри него должны.

+0

Он возвращает null, может быть, потому что в моем jquery-коде есть какая-то проблема. –

Смежные вопросы