通过 JavaScript 将 HTML 解析为纯文本
Parse HTML as a plain text via JavaScript
我正在提出一些 ajax 请求 returns 整个 HTML 页面作为响应。我需要从该页面获取一些数据,特别是特定 <input>
.
的 value
最好的方法是什么?
我的想法:
- 找到
<body>
标签结束和 </body>
开始的位置,将所有内容抓取到字符串中,然后通过 innerHTML
放入某个容器。
- 自制解析器:找到我需要的id的字符位置,将response字符串转成数组,设置读取位置等于id字符的位置,移动到
"
字符开始的位置,读取到缓冲直到新 "
到来。
如果有一个使用经典 DOM 语法的框架就完美了,比如:
htmlString.getElementById("someid").value
不知道它有多好,但只需将带有 <html>
和其他标签的整个响应传递给某些容器就可以了。然后,只需调用
document.getElementById("needid").value
一个非常优雅的解决方案是使用 DOMParser。
const parser = new DOMParser()
const virtualDoc = parser.parseFromString(htmlString, 'text/html')
然后,像对待任何 DOM-element、
一样对待 virtualDoc
virtualDoc.getElementById('someid').value
我正在提出一些 ajax 请求 returns 整个 HTML 页面作为响应。我需要从该页面获取一些数据,特别是特定 <input>
.
value
最好的方法是什么?
我的想法:
- 找到
<body>
标签结束和</body>
开始的位置,将所有内容抓取到字符串中,然后通过innerHTML
放入某个容器。 - 自制解析器:找到我需要的id的字符位置,将response字符串转成数组,设置读取位置等于id字符的位置,移动到
"
字符开始的位置,读取到缓冲直到新"
到来。
如果有一个使用经典 DOM 语法的框架就完美了,比如:
htmlString.getElementById("someid").value
不知道它有多好,但只需将带有 <html>
和其他标签的整个响应传递给某些容器就可以了。然后,只需调用
document.getElementById("needid").value
一个非常优雅的解决方案是使用 DOMParser。
const parser = new DOMParser()
const virtualDoc = parser.parseFromString(htmlString, 'text/html')
然后,像对待任何 DOM-element、
一样对待virtualDoc
virtualDoc.getElementById('someid').value