【问题标题】:Parse HTML as a plain text via JavaScript通过 JavaScript 将 HTML 解析为纯文本
【发布时间】:2020-12-31 07:05:17
【问题描述】:

我正在发出一些将整个 HTML 页面作为响应返回的 ajax 请求。我需要从该页面获取一些数据,特别是特定value<input>

最好的方法是什么?

我的想法:

  • 找到<body> 标签的结束位置和</body> 的开始位置,将里面的所有内容抓取到字符串中,然后通过innerHTML 放入某个容器中。
  • 自制解析器:找到我需要的id的字符位置,将响应字符串转换为数组,设置读取的位置等于id字符的位置,转移到"字符开始的地方,读取到缓冲区直到新的@ 987654327@来吧。

如果有一个使用经典 DOM 语法的框架来做到这一点就完美了,比如:

htmlString.getElementById("someid").value

【问题讨论】:

  • “什么是最好的方法...” 要求(最有可能)基于意见的答案,这对于 SO 来说是题外话。 “如果有一个框架就完美了……” 要求提供一个外部资源,这对于 SO 来说也是题外话。
  • @Andreas 最好的方式(显然)意味着最快、最容易使用。这不是主观的,因为我们可以计算一个人应该执行多少步骤,运行它需要花费多少时间。

标签: javascript html-parsing


【解决方案1】:

一个非常优雅的解决方案是使用 DOMParser。

const parser = new DOMParser()
const virtualDoc = parser.parseFromString(htmlString, 'text/html')

然后,像对待任何 DOM 元素一样对待 virtualDoc

virtualDoc.getElementById('someid').value

【讨论】:

  • 您的代码中有错字:virtualDom 应该是 virtualDoc
【解决方案2】:

不知道它有多好,但只需将带有<html> 和其他标签的整个响应传递给某些容器即可。然后,只需调用

document.getElementById("needid").value

【讨论】:

  • 这是一个答案吗?如果是这样,那么请将其设为good answer
猜你喜欢
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 2014-09-10
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多