2015-04-09 1 views
0

я создал следующий JavaScript:Как использовать childNodes для XML-документа?

<script> 
    function stats(cod) { 
     var th = document.getElementsByTagName("th"); 
     var tds = document.getElementsByClassName("pt"); 

     httpRequest = new XMLHttpRequest(); 
     httpRequest.onreadystatechange = function() { 
      if (httpRequest.readyState == 4 && httpRequest.status == 200) { 
       var xmlDoc = httpRequest.responseXML.documentElement; 

       th[0].innerHTML = xmlDoc.getElementsByTagName('name')[0].firstChild.nodeValue; 
       tds[0].innerHTML = xmlDoc.getElementsByTagName('what')[0].firstChild.nodeValue; 
       tds[1].innerHTML = xmlDoc.getElementsByTagName('office')[0].firstChild.nodeValue; 
       tds[2].innerHTML = xmlDoc.getElementsByTagName('www')[0].firstChild.nodeValue; 
       tds[3].innerHTML = xmlDoc.getElementsByTagName('over')[0].firstChild.nodeValue; 
      } 
     } 
     httpRequest.open("GET","getData.php?codice=" + cod, true); 
     httpRequest.send(null); 
    } 
</script> 

я уверен, что это лучший способ, чтобы прочитать содержимое XML и присвоить его значение в таблице TD. Я попытался получить массив из всех элементов, содержащихся в пределах xmlDoc, используя xmlDoc.getElementsByTagName('response').childNodes;, но результат, кажется, не определен.

EDIT:

Вот образец XML:

<response> 
    <name>The name</name> 
    <what>What is</what> 
    <office>The office</office> 
    <www>The website</www> 
    <over>Yes</over> 
</response> 
+0

Покажите нам образец XML, а затем объясните словами, какие данные вы хотите прочитать. Выполнение 'xmlDoc.getElementsByTagName ('response'). ChildNodes' не имеет смысла, поскольку' getElementsByTagName' возвращает 'NodeList' и не имеет никакого свойства' childNodes', только каждый элемент в 'NodeList' имеет' childNodes' имущество. –

+0

Я обновил свой вопрос. Что означает свойство childNodes? – smartmouse

ответ

1

Вы можете легко получить доступ к response элемент как

var response = httpRequest.responseXML.documentElement; 

Я бы тогда не попробовать использовать childNodes как может включать в себя текстовый узел между элементами при использовании response.children даст вам дочерние элементы, но только в современных браузерах , В таком случае элементы также имеют textContent свойство можно использовать в случае, всех тех, кто firstChild.nodeValue доступ:

var childElements = response.children; 

th[0].innerHTML = childElements[0].textContent; 
tds[0].innerHTML = childElements[1].textContent; 
... 

С другой стороны, как только порядок элементов в ваших изменений XML или элемент опущен вы зачитать неправильные данные, поэтому есть некоторые преимущества при использовании, например, response.getElementsByTagName('www')[0].textContent по имени.

1

getElementsByTagName возвращает массив типа коллекцию элементов.

Конкретный элемент (включая каждый элемент коллекции) может иметь childNodes. Сама коллекция не будет.

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

  • Нет связанных вопросов^_^