建议抛弃 ie 的可以退下了,人家可能定位的群体,大部分使用 ie 的怎么办?
楼主看看这篇文章 http://laiyenmin.blogspot.tw/2014/01/xpath-ie10-ie11-selectnodes.html
經過不斷的 google ,網路上有幾個解法
\1. 在獲取 xml 的同時,將他封裝成 MSXML
 try{
  xhr.responseType = "msxml-document";
}catch(e){}
 
\2. 在使用 xPath 的地方將 xml 變更成 MSXML
 var doc;
try{
  doc = new ActiveXObject('Microsoft.XMLDOM');
  doc.loadXML(stringVarWithXml);
  var node = doc.selectSingleNode('//foo');
}catch(e){
  //deal with case that ActiveXObject is not supported
}
 
\3. 使用模擬 xPath 的套件取代 xPath 行為
https://code.google.com/p/wicked-good-xpath/
雖然其實最後這三個解法都無法解決我的問題
我另外又試了另一個可能可以的方法
使用 getElementsByTagName() 函式來取代 SelectNodes (SelectSingleNode)
但是在程式中又都是只尋找下一層的子節點
而且原本的 xml 竟然一大堆同名的節點下方還有同名的節點
真是被打敗
於是花了很多時間,把原本的程式邏輯搞清楚
發現其實根本不需要用到 xPath 因為所有的搜尋行為都只找下一層而已
因此我自己寫了一個 getChildByName function 來取代掉原本的方法
 getChildByName = function(xmlDoc, tagName){
  var tmpXML = xmlDoc.cloneNode(true);
  var childNodes = tmpXML.childNodes;
  for(var i = childNodes.length-1 ; i >= 0 ; i--){
    if(childNodes[i].tagName != tagName){
      tmpXML.removeChild(childNodes[i]);
    }
  }
  childNodes = tmpXML.childNodes;
  return childNodes;
}
 
其實確實是還有改進的空間
但是以目前來說,可以確實解決問題就好了