提问者:小点点

用JS解析HTML字符串


我寻找一个解决方案,但没有任何相关的,所以这是我的问题:

我想解析一个包含HTML文本的字符串。我想用JavaScript来做。

我尝试了这个库,但它似乎解析我当前页面的HTML,而不是从一个字符串。因为当我尝试下面的代码时,它会更改我页面的标题:

var parser = new HTMLtoDOM("<html><head><title>titleTest</title></head><body><a href='test0'>test01</a><a href='test1'>test02</a><a href='test2'>test03</a></body></html>", document);

我的目标是从一个HTML外部页面中提取链接,我就像读一个字符串一样。

你知道做这件事的API吗?


共2个答案

匿名用户

创建一个虚拟DOM元素并将字符串添加到其中。然后,您可以像操作任何DOM元素一样操作它。

var el = document.createElement( 'html' );
el.innerHTML = "<html><head><title>titleTest</title></head><body><a href='test0'>test01</a><a href='test1'>test02</a><a href='test2'>test03</a></body></html>";

el.getElementsByTagName( 'a' ); // Live NodeList of your anchor elements

编辑:添加jQuery答案来取悦粉丝!

var el = $( '<div></div>' );
el.html("<html><head><title>titleTest</title></head><body><a href='test0'>test01</a><a href='test1'>test02</a><a href='test2'>test03</a></body></html>");

$('a', el) // All the anchor elements

匿名用户

很简单:

var parser = new DOMParser();
var htmlDoc = parser.parseFromString(txt, 'text/html');
// do whatever you want with htmlDoc.getElementsByTagName('a');

根据MDN的说法,要在chrome中做到这一点,您需要将其解析为XML,如下所示:

var parser = new DOMParser();
var htmlDoc = parser.parseFromString(txt, 'text/xml');
// do whatever you want with htmlDoc.getElementsByTagName('a');

webkit当前不支持它,您必须遵循Florian的回答,而且它在大多数情况下无法在移动浏览器上工作。

编辑:现在广泛支持

相关问题