0

名前空間を含む以下のxml応答があります。

<?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を解析する必要があります。どうすればこれを達成できますか? これは私にとって少し緊急です。

4

1 に答える 1

0

getElementsByTagNameNS名前空間では、名前空間 URI で使用する必要があります

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

ただし、これは明らかに 9 より前の IE では機能しません。一般的に推奨されるクロス ブラウザー ソリューションはSarissaです。これは、より多くのブラウザーで機能する方法で XPath アプローチを実装する JavaScript ライブラリです。

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");
于 2013-02-27T13:36:47.093 に答える