当前位置: 首页 > 知识库问答 >
问题:

用JS解析HTML字符串

陆耀
2023-03-14

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

我想解析一个包含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个答案

姚烨
2023-03-14

很简单:

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的回答,而且它在大多数情况下无法在移动浏览器上工作。

编辑:现在广泛支持

吴哲
2023-03-14

创建一个虚拟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
 类似资料:
  • 我寻找一个解决方案,但没有任何相关的,所以这是我的问题: 我想解析一个包含HTML文本的字符串。我想用JavaScript来做。 我尝试了这个库,但它似乎解析我当前页面的HTML,而不是从一个字符串。因为当我尝试下面的代码时,它会更改我页面的标题: 我的目标是从一个HTML外部页面中提取链接,我就像读一个字符串一样。 你知道做这件事的API吗?

  • 问题内容: 我在使用jQuery 解析HTML字符串时问我如何在html字符串上使用jQuery。一切正常,但是当我将其应用于ajax时-它不起作用。这是代码。 moo.html包含 如何获得斑马纹和杠铃? 问题答案: 我认为其中的换行符可能会让您失望。 html中的所有换行符最终都将由jQuery解析并保留为文本节点元素。结果,当这些节点中的第一个被命中并调用时,它将停止迭代(不适用于非Elem

  • 存在问题 来自用户输入,一个文件或一个网站的HTML字符串,你可能需要对它进行解析并取其内容,或校验其格式是否完整,或想修改它。怎么办?jsonu能够帮你轻松解决这些问题 解决方法 使用静态Jsoup.parse(String html) 方法或Jsoup.parse(String html, String baseUri)示例代码: String html = "<html><head><tit

  • 问题内容: 给定字符串,获取代表它的DOM元素的(最简单)方法是什么? 问题答案: 我在某个地方找到了(不记得在哪里):

  • 问题内容: 使用ajax调用,我返回了页面的partialView HTML,但是在显示之前,我希望从主div中获取信息。如果我创建一个浮动窗口,这些数据只是大小信息。 码: 将鼠标悬停在partialViewDom上时,我可以在chrome调试器中看到数据,但是类选择似乎无效。有什么线索吗?它解析不正确吗?谢谢。 问题答案: 尝试使用代替元素,很可能您的元素是dom片段中的顶级元素。

  • 问题内容: 如何从以下位置解码我的html字符串: 至 在Swift 3中? 问题答案: 在替换符号时,您真的需要保留标签吗?Leo Dabus在“ 将Unicode符号或其XML / HTML实体转换为Swift中的Unicode数字”中提出了一种技术,该符号转换包括通过属性字符串来回转换符号。 在Swift 4中: 如果要使用属性字符串(例如,用于中) 这也将转换为斜体。 如果您只想转换HTM