Dom 我可以一次性将Ajax requestXML对象附加到文档树吗?

Dom 我可以一次性将Ajax requestXML对象附加到文档树吗?,dom,xmlhttprequest,Dom,Xmlhttprequest,你好。 以下是我的服务器在responseXML对象中返回的XML对象: <tableRoot> <table> <caption>howdy!</caption> <tr> <td>hello</td> <td>world</td> </tr> <tr> &

你好。 以下是我的服务器在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替换为just firstChild时也会出现相同的结果。 好像我刚拿到节点值,所有的标签都被去掉了?! 我是否从根本上误解了responseXML对象应该代表什么? 顺便说一句,如果我去掉“root”标记,并将innerHTML设置为responseText,这就行了。

有人能告诉我使用responseXML的正确方法吗?

您可以在要插入的位置创建一个元素,然后再插入


element.innerHTML=request.responseText

您可以在要插入的位置创建元素,然后执行以下操作


element.innerHTML=request.responseText

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

1) 添加命名空间声明:

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

希望这有帮助

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

1) 添加命名空间声明:

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

希望这有帮助

谢谢你,我已经用这种方法工作了。但我觉得使用appendChild有很多好处。首先,我可以稍后使用replaceChild来回交换内容。使用innerHTML,我无法轻松地在树中循环删除回调引用或更改属性。无论如何,我只是不理解responseXML对象。它的作用似乎与我使用appendChild从头构建的对象不同。要么我想的不对,要么我有一个实现错误。此刻,我不知道它是哪一个!我真的不明白。完成innerHTML后,所有内容都将转换为DOM节点,您可以在其上执行任何需要的操作。没什么神奇的。好的,谢谢。我显然很困惑。因此innerHTML将我的表附加到树上,而使用DOM方法附加responseXML则没有任何用处。有点奇怪。我不知道确切的原因,但我们避免使用responseXML,too@Marvin:“使用DOM方法附加responseXML没有任何用处。有点令人惊讶”-我同意这是令人惊讶的-它以前咬过我。但它是有记录的()。为了将responseXML中的节点附加到网页的DOM中,必须使用importNode()。谢谢,我已经使用了这种方法。但我觉得使用appendChild有很多好处。首先,我可以稍后使用replaceChild来回交换内容。使用innerHTML,我无法轻松地在树中循环删除回调引用或更改属性。无论如何,我只是不理解responseXML对象。它的作用似乎与我使用appendChild从头构建的对象不同。要么我想的不对,要么我有一个实现错误。此刻,我不知道它是哪一个!我真的不明白。完成innerHTML后,所有内容都将转换为DOM节点,您可以在其上执行任何需要的操作。没什么神奇的。好的,谢谢。我显然很困惑。因此innerHTML将我的表附加到树上,而使用DOM方法附加responseXML则没有任何用处。有点奇怪。我不知道确切的原因,但我们避免使用responseXML,too@Marvin:“使用DOM方法附加responseXML没有任何用处。有点令人惊讶”-我同意这是令人惊讶的-它以前咬过我。但它是有记录的()。为了将responseXML中的节点附加到网页的DOM中,您必须使用importNode()。哦,我多么希望您在这里包含IE9的详细信息。哦,我多么希望您在这里包含IE9的详细信息。