2010-10-27 165 views

回答

1

在你的榜樣,xmlobject文檔對象,according to MDC。據w3schools,在IE瀏覽器,你需要使用IE特定ActiveX對象,而不是DOMParser

var xmlDoc, parser; 
if (window.DOMParser) { 
    parser = new DOMParser(); 
    xmlDoc = parser.parseFromString(text,"text/xml"); 
} 
else { // Internet Explorer 
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async="false"; 
    xmlDoc.loadXML(text); 
} 

你說getElementById是行不通的。請注意,id默認情況下不是XML中的特殊屬性(類型爲「ID」的屬性),因此即使給元素賦予id屬性,getElementById也不起作用(應返回null)。詳情請見W3C docs for getElementById。我從來沒有做過,但我認爲你會通過DTD爲「ID」類型分配一個屬性。

但是,如果沒有,您可以使用其他遍歷機制。例如(live copy):

var xmlDoc, parser, text, things, index, thing; 

text = 
    '<test>' + 
    '<thing>Thing 1</thing>' + 
    '<thing>Thing 2</thing>' + 
    '</test>'; 
if (window.DOMParser) { 
    parser = new DOMParser(); 
    xmlDoc = parser.parseFromString(text,"text/xml"); 
} 
else { // Internet Explorer 
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async="false"; 
    xmlDoc.loadXML(text); 
} 
things = xmlDoc.documentElement.getElementsByTagName('thing'); 
for (index = 0; index < things.length; ++index) { 
    thing = things.item(index); 
    display(index + ": " + getText(thing)); 
} 

...其中getText是:

function getText(element) { 
    return textCollector(element, []).join(""); 
} 
function textCollector(element, collector) { 
    for (node = element.firstChild; node; node = node.nextSibling) { 
     switch (node.nodeType) { 
      case 3: // text 
      case 4: // cdata 
      collector.push(node.nodeValue); 
      break; 
      case 8: // comment 
       break; 
      case 1: // element 
      if (node.tagName == 'SCRIPT') { 
       break; 
      } 
      // FALL THROUGH TO DEFAULT 
      default: 
      // Descend 
      textCollector(node, collector); 
      break; 
     } 
    } 
    return collector; 
} 

getText就是爲什麼我使用圖書館像jQueryClosurePrototypeYUI,或者any of several others一個很好的例子這個東西,你會認爲在一個元素中獲得文本會很簡單,如果元素裏面只有一個文本節點,它就是 [因爲我們的thing秒以上]。如果它沒有,那麼,it gets complicated fast。)

+0

hmmmm ....我無法調用像getElementById等等的方法...這就是爲什麼......猜猜是否有其他錯誤... – 2010-10-27 09:28:17

+0

@Arun :您可能正在尋找'xmlDoc.documentElement' - 我會做一個簡單的例子。 – 2010-10-27 09:30:08

+0

@阿倫:我已經添加了一個例子。 – 2010-10-27 09:47:56