我可以一次性将 Ajax requestXML 对象追加到我的文档树中吗?

2 dom xmlhttprequest

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

<tableRoot>
   <table>
      <caption>howdy!</caption>
      <tr>
         <td>hello</td>
         <td>world</td>
      </tr>
      <tr>
         <td>another</td>
         <td>line</td>
      </tr>
   </table>
Run Code Online (Sandbox Code Playgroud)

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

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

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

你好!你好世界另一条线

我仅用firstChild 替换firstChild.firstChild 会发生相同的结果。看起来我刚刚获取了节点值,所有标签都被删除了?!我是否从根本上误解了responseXML对象应该代表什么?顺便说一句,如果我取出“root”标签,并将innerHTML 设置为responseText,那么这是有效的。
有人可以告诉我使用responseXML 的正确方法吗?

Ser*_*sky 5

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

1)添加命名空间声明:

<table xmlns="http://www.w3.org/1999/xhtml">
Run Code Online (Sandbox Code Playgroud)

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

var element = document.importNode(responseXML.firstChild.firstChild, true);
document.getElementById('entryPoint').appendChild(element);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!