1

问候。这是我的服务器在 responseXML 对象中返回的 XML 对象:

<tableRoot>
   <table>
      <caption>howdy!</caption>
      <tr>
         <td>hello</td>
         <td>world</td>
      </tr>
      <tr>
         <td>another</td>
         <td>line</td>
      </tr>
   </table>

现在我将此片段附加到我的文档树中,如下所示:

getElementById('entryPoint').appendChild(responseXML.firstChild.firstChild);

但是,我没有被呈现为表格,而是得到以下文本

你好!helloworldanotherline

同样的结果发生在我只用 firstChild 替换 firstChild.firstChild 时。好像我只是得到了nodeValues,所有的标签都被剥离了?!我从根本上误解了 responseXML 对象应该代表什么吗?顺便说一句,如果我取出“根”标签并将innerHTML设置为responseText,这可行。
有人可以告诉我使用responseXML的正确方法吗?

4

2 回答 2

4

您将获得文本而不是表格,因为您使用纯 DOM 进行操作,并且您的响应 XML 没有名称空间声明。因此,当添加 XML 元素时,浏览器不知道您的“table”标签是来自 HTML、XUL、SVG 还是来自其他。

1)添加命名空间声明:

<table xmlns="http://www.w3.org/1999/xhtml">

2)您应该首先将该节点导入您的 HTML DOM 文档,而不是直接插入引用的 XML DOM 元素:

var element = document.importNode(responseXML.firstChild.firstChild, true);
document.getElementById('entryPoint').appendChild(element);

希望这可以帮助!

于 2009-05-04T19:59:01.687 回答
0

您可以在要插入的位置创建一个元素,而不是这样做

element.innerHTML = request.responseText

于 2009-04-29T21:00:44.607 回答