2011-02-24 228 views
0

我正在嘗試使用XMLHTTPRequest來下載.xml文件,並將它的一些元素作爲內容添加到頁面中。我所做的是做出請求,獲取文檔,從我想要導入的xml中獲取特定的DOM元素,使用existing.appendChild(fromXML)將xml DOM中的元素附加到HTML DOM中的元素。如何將XML DOM元素轉換爲HTML DOM元素?

但是,沒有呈現實際的標籤。每個標籤內的文本都呈現得很好。但標籤本身似乎被忽略。 Firebug以淺藍色字體顯示HTML面板中的添加標籤,而不是其他標籤的藍色標籤,但我無法弄清楚這意味着什麼。 webkit開發者工具也向我展示了標籤在那裏(雖然沒有特殊的顏色),但是它們沒有正確渲染(例如,img和標籤根本沒有任何效果)。

我是否缺少一些從XML DOM到HTML DOM的轉換?

這裏是我的意見代碼簡潔簡單的版本:

// Make xmlHTTPRequest 
... 

// Get items from the response xml 
var items = xhr.responseXML.getElementsByTagName("item"); 

// Get one item and it's children recursively 
var elm = document.importNode(items[0],true); 

// Get the existing element to add the item add to 
existingDomElement = document.getElementById("demo"); 

for (var i = 0; i < $(elm).children().length; i++) { 
    var child = $($(safeChild).children()[i])[0]; 
    existingDomElement.appendChild(child); 
} 
+1

命名空間中的XML元素可能是? – 2011-02-24 08:48:20

+0

純粹的巧合,我幾乎在讀完你的問題後立即遇到了同樣的問題(在GWT中工作)。我不知道答案,但我想我可能必須在將它們附加之前將節點轉換爲HTML DOM節點。 – 2011-02-24 10:43:15

+0

如何將東西轉換爲HTML DOM節點?我已經用我能想到的每一個措辭來查看,唯一被廣泛記錄的轉換是相反的。 – DanBlakemore 2011-02-24 16:35:19

回答

0

顯然,它已經做過,看到this question。這張海報的代碼似乎有用,但他想要更優雅和簡潔的東西。至少,他似乎比你領先一步。

但唯一的建議就是將整個東西序列化爲文本,然後解析它在當前的樹中 - 無論如何,這可能不一定適用於您的情況,因爲XML可能不總是正確解析爲HTML ...

+0

我會扔在那裏,看看有什麼出來。在我的情況下,xml的元素包含HTML。 – DanBlakemore 2011-02-26 07:43:41