使用 Prototype 的 $() 解析responseXML

发布于 2024-08-22 15:33:52 字数 379 浏览 6 评论 0原文

我从 Ajax.Response.responseXML 中的 Ajax.Request 返回了 XML。我的 XML 实际上包含 XHTML 标签,我希望将其附加到我的文档中。

但是,我在将 responseXML 中的节点附加到当前文档时遇到问题。我怀疑这是因为它们是 XML 节点而不是 DOM 节点。

responseXML 包装在 $() 中似乎也不会返回节点的扩展版本,并且文档没有说明它会或不会。

Prototype 是否提供了一种使用 responseXML 的方法,如果没有,是否有跨浏览器的方法来解析响应并使用它?

I've got XML coming back from an Ajax.Request in Ajax.Response.responseXML. My XML actually contains XHTML tags which I hope to append into my document.

I'm having issues appending nodes from the responseXML into the current document, however. I suspect that this is because they are XML nodes and not DOM nodes.

Wrapping the responseXML in $() doesn't seem to return an extended version of the nodes, either, and the documentation doesn't say that it will or won't.

Does Prototype provide a way to make use of the responseXML, and if not, is there a cross-browser way to parse the response and use it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

难理解 2024-08-29 15:33:52

尽管我接受 Christian 的答案为“正确”答案,但我的同事向我展示了一种使用 Prototype 解析 XML 响应的方法。

您无需使用 responseXML,只需创建一个 Element,然后使用 responseText 对其进行 update()。然后,您可以使用 select() 和类似的方法来遍历节点。

Although I accepted Christian's answer as the "correct" answer, a colleage of mine showed me a way to parse an XML response with Prototype.

Rather that using responseXML, you simply create an Element and then update() it with the responseText. You can then use select() and methods like it to traverse the nodes.

指尖上得阳光 2024-08-29 15:33:52

没有原型没有解析 XML 的本机方法。您也不能使用 $(xml) 扩展 xml,然后使用 .next()、.select() 等遍历 DOM。

这是我最近在一个项目中所做的示例,从拼写检查结果中手动解析一些 XML 。应该让你开始。

parseResults: function(results) {
var c = results.responseXML.getElementsByTagName('c');
var corrections = $A(c);
if(!corrections.size()){
  this.link.insert({ after: '<span class="spellCheckNoErrors">No spelling errors</span>' });
  (function(){ this.link.next().remove(); }.bind(this)).delay(1);
  return null;
}
this.res = $A();
corrections.each(function(node){
  sugg = node.childNodes[0].nodeValue;
  offset = node.attributes[0].nodeValue;
  len = node.attributes[1].nodeValue;
        this.res.push(
    $H({
      word: this.text.substr(offset, len),
      suggestions: sugg.split(/\s/)
          })
  );
},this);
this.overlay();
},

No prototype does not have a native way to parse XML. Nor can you extend the xml with $(xml) and then walk the DOM with .next(),.select(), etc.

Here is an example of what I did recently on a project to manually parse some XML from spell check results. Should get you started.

parseResults: function(results) {
var c = results.responseXML.getElementsByTagName('c');
var corrections = $A(c);
if(!corrections.size()){
  this.link.insert({ after: '<span class="spellCheckNoErrors">No spelling errors</span>' });
  (function(){ this.link.next().remove(); }.bind(this)).delay(1);
  return null;
}
this.res = $A();
corrections.each(function(node){
  sugg = node.childNodes[0].nodeValue;
  offset = node.attributes[0].nodeValue;
  len = node.attributes[1].nodeValue;
        this.res.push(
    $H({
      word: this.text.substr(offset, len),
      suggestions: sugg.split(/\s/)
          })
  );
},this);
this.overlay();
},
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文