2013-02-27 2 views
0

У меня есть ответ xml с пространством имен.Прочитать xml с пространством имен в IE, FF и chrome

<?xml version="1.0"?> 
<response status="200"> 
    <ns3:op xmlns="http://xxx.com/details/" 
       xmlns:ns2="http://xxx.com/mgmt/" 
       xmlns:ns3="http://xxx.com/list/"> 
    <ns2:ntfs count="140"> 
     <ns2:ntf> 
     <ns2:Nid>4687807</ns2:Nid> 
     </ns2:ntf> 
    </ns2:ntfs> 
    </ns3:op> 
</response> 

Мне нужно разобрать это и получить значение Nid для каждой строки. Я попытался использовать getElementsByTagName (ns3: op), но он не работает в сафари. Также попытался использовать xmlDoc.documentElement.selectNodes ("/ response/op/ntfs"); Но он не работает в FF. есть ли способ, в котором я могу прочитать ответ независимо от пространства имен и браузера.

Привет,

Мой выход XML может измениться, и элементы могут иметь или не иметь префиксы пространства имен. Так что мне нужно разбирать xml независимо от пространства имен. Как я могу достичь этого? Это немного срочно для меня, любые указатели были бы благодарны.

ответ

0

С пространствами имен, которые необходимо использовать getElementsByTagNameNS с пространством имен URI

document.getElementsByTagNameNS('http://xxx.com/list/', 'op') 

Однако это, по-видимому, не работает в IE раньше, чем обычно 9. рекомендуемого поперечному решение браузера Sarissa, библиотека JavaScript, который реализует XPath таким образом, который работает в других браузерах:

var xmlDoc = new DOMParser().parseFromString(....); 
xmlDoc.setProperty("SelectionNamespaces", 'xmlns:ns3="http://xxx.com/list/"'); 
xmlDoc.setProperty("SelectionLanguage", "XPath"); 
var op = xmlDoc.selectSingleNode("/response/ns3:op"); 
+0

@ Ian .. Спасибо за ответ. Но getElementsByTagNameNS не работает в IE 8. Есть ли способ, которым код работает во всех браузерах, таких как IE, FF и chrome ... – later2013

+0

@ later2013 Я немного поработал и отредактировал свой ответ с другим предложением. –

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