2012-05-26 9 views
0

У меня возникли проблемы при анализе xml-ответа в моем Javascript-коде (с использованием extjs 4, но я думаю, что это не имеет значения здесь).Javascript, не удается разобрать дочерние узлы XML

XML-ответ что-то вроде этого:

<response> 
    <id>9</id> 
    <time>2012-05-24 14:22:44</time> 
    <name>user</name> 
    <message>message</message> 
    <p2pchat> 
    <requestor>user1</requestor> 
    <requested>user2</requested> 
    <time>2012-05-26 12:13:28</time> 
    <message>msg</message> 
    </p2pchat> 
</response> 

Я не проблемы разборе элементов 1-го уровня, как ид, время, имя и сообщение, но мой JS код не может получить доступ к более глубоким. Код:

var response = xmlHttpGetMessages.responseText; 
response = xmlHttpGetMessages.responseXML.documentElement; 
idArray = response.getElementsByTagName("id"); 
nameArray = response.getElementsByTagName("name"); 
timeArray = response.getElementsByTagName("time"); 
messageArray = response.getElementsByTagName("message"); 

requestorsArray = response.getElementsByTagName("p2pchat/requestor"); 
requestedsArray = response.getElementsByTagName("p2pchat/requested"); 
timep2pArray = response.getElementsByTagName("p2pchat/time"); 
messagep2pArray = response.getElementsByTagName("p2pchat/message"); 

После выполнения этого кода, длина четырех последних массивов всегда 0, ничего не было получено с моего ответа XML. Я искал google для того, чтобы разобрать внутренние элементы в дереве xml, но на 10 разных страницах я нашел почти 10 разных синтаксисов, ни один из них не работал для меня. Любая идея?

ответ

0

Пару часов интеллектуального анализа данных на Google даваемое мне решение, я отправляю его здесь, так что если кто-то сталкивается с той же проблемой и находит этот пост имеет решение я использовал:

var xmlp2pchat = response.getElementsByTagName("p2pchat"); 

var requestorsArray = Array(); 
var requestedsArray = Array(); 
var timep2pArray = Array(); 
var messagep2pArray = Array(); 

for(var i=0;i<xmlp2pchat.length;i++) { 
    var x = xmlp2pchat[i].getElementsByTagName("requestor"); 
    var y = xmlp2pchat[i].getElementsByTagName("requested"); 
    var z = xmlp2pchat[i].getElementsByTagName("time"); 
    var t = xmlp2pchat[i].getElementsByTagName("message"); 

    for(var j=0;j<x.length;j++) { 
    requestorsArray.push(x[j]); 
    requestedsArray.push(y[j]); 
    timep2pArray.push(z[j]); 
    messagep2pArray.push(t[j]); 
    } 

} 

И тогда я использую с

var whatever = requestorsArray[i].firstChild.data 
Смежные вопросы