【问题标题】:Creating a document from a string in Gecko在 Gecko 中从字符串创建文档
【发布时间】:2010-12-09 15:13:19
【问题描述】:

我有一个字符串,例如 <html><body><div id="message">Hello World!</div></body></html> 我想在不自己解析 HTML 的情况下获取 #message 元素的内容。

我想也许我可以从 Gecko 中的字符串创建一个文档对象(这是用于 Firefox 插件),但我没有看到任何简单的方法。

我注意到有一个createDocument 方法,但它不需要字符串。我必须从文本中删除<html> 部分,然后我再次开始假设内容。

有人有什么想法吗?谢谢。

编辑:这似乎对我有用:

doc = document.implementation.createDocument( "http://www.w3.org/1999/xhtml", "html", null );
doc.firstChild.innerHTML = '<html><body><div id="message">Hello World!</div></body></html>';
node = doc.getElementById( "message" ); 
alert( node.innerHTML );

【问题讨论】:

  • 您应该在编辑时添加一个新答案。

标签: javascript xml dom firefox-addon gecko


【解决方案1】:

你从哪里得到字符串?如果是 XML,您可以使用 DOMParser

否则,您必须创建一个 HTML 文档 - https://developer.mozilla.org/en/Parsing_HTML_From_Chrome

仅使用createDocument 有效的事实似乎令人怀疑,因为人们一直使用更复杂的解决方案。

【讨论】:

  • 我通过 xhr 从远程源获取它。
  • 我也会尝试 domparser 方法,只是好奇它是否有效并且更简单。谢谢。
  • 是的,但是谁控制远程源返回数据的格式?
【解决方案2】:

不喜欢回答我自己的问题,但这似乎对我有用:

doc = document.implementation.createDocument( "http://www.w3.org/1999/xhtml", "html", null );
doc.firstChild.innerHTML = '<html><body><div id="message">Hello World!</div></body></html>';
node = doc.getElementById( "message" ); 
alert( node.innerHTML );

【讨论】:

  • 别忘了声明变量。
  • 它们在方法开头的一个逗号分隔行中声明。我们使用 jslint。
【解决方案3】:

总是这样的语法吗?如果是这样,为什么不使用正则表达式?

【讨论】:

  • 它可能总是也可能不是那种语法。
猜你喜欢
  • 1970-01-01
  • 2016-01-20
  • 2012-03-24
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 1970-01-01
相关资源
最近更新 更多