我該如何獲取文檔對象?javascript/ajax幫助需要
var xmlobject = (new DOMParser()).parseFromString(xmlstring, "text/xml");
我該如何獲取文檔對象?javascript/ajax幫助需要
var xmlobject = (new DOMParser()).parseFromString(xmlstring, "text/xml");
在你的榜樣,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
就是爲什麼我使用圖書館像jQuery,Closure,Prototype,YUI,或者any of several others一個很好的例子這個東西,你會認爲在一個元素中獲得文本會很簡單,如果元素裏面只有一個文本節點,它就是是 [因爲我們的thing
秒以上]。如果它沒有,那麼,it gets complicated fast。)
hmmmm ....我無法調用像getElementById等等的方法...這就是爲什麼......猜猜是否有其他錯誤... – 2010-10-27 09:28:17
@Arun :您可能正在尋找'xmlDoc.documentElement' - 我會做一個簡單的例子。 – 2010-10-27 09:30:08
@阿倫:我已經添加了一個例子。 – 2010-10-27 09:47:56