2015-06-05 4 views
0

У меня возникают проблемы, пытаясь понять, как получить значение из файла XML с помощью JavaScript, который выглядит как:Получить значения из XML в JavaScript

<Network> 
    <Local> 
     <Name>Name 1</Name> 
     <IP>192.168.0.1</IP> 
    </Local> 
    <Network1> 
     <Name>Test</Name> 
     <IP>192.168.0.2</IP> 
    </Network1> 
    <Network2> 
     <Name>Demo</Name> 
     <IP>192.168.0.3</IP> 
    </Network2> 
</Network> 

Значение Я пытаюсь получить это Имя от Network1 что «Test»

Я попытался, используя следующий код, но не могу заставить его работать ..

xmlDoc=xmlhttp.responseXML; 

    var Name1 = xmlDoc.getElementsByTagName("Name")[1]; 
     Name1 = Name1.childNodes.length ? Name1.childNodes[0].nodeValue : "" ; 

    var Name2 = xmlDoc.getElementsByTagName("Name")[2]; 
     Name2 = Name2.childNodes.length ? Name2.childNodes[0].nodeValue : "" ; 

    alert(Name1); //should alert 'Test' 
    alert(Name2); //should alert 'Demo' 

Я делаю что-то неправильно?

+1

Вы получили ошибки? – Nit

+0

вы можете записать/оповестить значение 'typeof xmlDoc' после' xmlDoc = xmlhttp.responseXML; ' –

ответ

0

Как мы видим ниже, ваш фрагмент кода работает, если у вас есть фактический узел XML. Поэтому ваша ошибка должна лежать где-то в другом месте.

var xmlString = "<Network><Local><Name>Name 1</Name><IP>192.168.0.1</IP></Local><Network1><Name>Test</Name><IP>192.168.0.2</IP></Network1><Network2><Name>Demo</Name><IP>192.168.0.3</IP></Network2></Network>"; 
 
var xml = $.parseXML(xmlString); 
 
var nodes = xml.getElementsByTagName("Name"); 
 
var nameNode = nodes[1]; 
 
var nameString = nameNode.childNodes.length ? nameNode.childNodes[0].nodeValue : "" ; 
 
alert(nameString);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Вполне вероятно, что, например, ваш xmlDoc вместо этого строка, вы проверили его тип?

Обратите внимание, что я использовал jQuery здесь для краткости в разборе XML-строки, вы можете так же легко использовать ванильный Javascript.

+0

[responsexml] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#xmlhttprequest -responsexml) - возвращает объект документа –

+0

@ArunPJohny Он также может возвращать null в разных случаях. – Nit

+0

Привет, я надеялся не использовать jQuery – Aaron

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