2011-02-24 257 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