2014-12-30 3 views
1

Итак, у меня есть XML-канал, который возвращает кучу результатов. Сначала я создаю XML-парсер как outlined in faino's answer here.Как получить текстовое значение узла XML в IE8?

XML обрабатывает только штрафы. Не каждый результат выглядит следующим образом:

<result> 
<title>some title</title> 
<bid>0.05123</bid> 
<description>some desc</description> 
</result> 

Так у меня есть:

// parse 
var xmlParser = returnXMLParser(); 
var resultsDoc = xmlParser(adXML.responseData); // #document 
var listings = resultsDoc.getElementsByTagName('listing'); // returns 8-10 
// get title node 
var title = listings[0].getElementsByTagName('title')[0]; 
title.nodeType // 1 
title.nodeName // "title" 

Вот проблема, хотя, я перепробовал все имущество мыслимого получить внутренний текст: textConent, innerText, innerHTML, nodeValue - нет из них, похоже, работают в IE8.

Тот же сценарий отлично работает в Chrome/FF с использованием .textContent

Помощь!

+0

Попробуйте 'title.childNodes [0] .nodeValue' – Musa

+0

Другой текст внутри внутри? Ба, это была пустая трата 20 минут ... –

+0

title.text должен делать это в IE8 – Mouser

ответ

4

кросс-браузер обратно совместим скрипт:

function getXMLContent(obj,action) 
{ 

    //cross-browser get and set for xmlContent 
    if (obj) 
    { 
     if (action == "get") //get 
     { 
      if(obj.textContent) 
      { 
       return obj.textContent; 
      } 
      else 
      { 
       return obj.text; 
      } 
     } 
     else //set 
     { 
      if(obj.textContent) 
      { 
       obj.textContent = action; 
      } 
      else 
      { 
       obj.text = action; 
      } 
     } 
    } 
    else 
    { 
     throw new Error("XML-Element doesn't exist."); 
    } 
} 

В моих собственных AJAX-вызовов, где я извлекаемых XML Я всегда использовать эту функцию, чтобы получить к содержимому узла.

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