【发布时间】:2009-08-09 15:52:25
【问题描述】:
我需要在 C++ 中对 HTML 做一些简单的修改,最好不要完全重写 HTML,比如当我使用 libxml2 或 MSHTML 时会发生什么。
特别是我需要能够读取,然后(可能)修改所有“img”元素的“src”属性。我需要它足够健壮,以便能够使用任何有效的 HTML 来执行此操作,但最好不要在此过程中更改任何其他 HTML。
是否有任何库可以处理这个问题?或者这是我可以用正则表达式做的事情吗?我对正则表达式不太了解,我在这里读过很多问题,说你不应该使用它们来解析 HTML,但我不清楚这是否适用于这样的事情,或者该原则是否适用主要是在从 HTML 构建树的上下文中进行解析。
【问题讨论】:
-
我不确定我是否理解您的限制。使用 DOM 并不会完全重写 HTML。
-
@EBGreen,libxml 添加一个
标记、一个 标记,并重新格式化所有 HTML。 MSHTML 将所有标记更改为大写,并重新格式化。而且由于有效的 HTML 仍然可以在浏览器中显示,因此将其分解为 DOM 通常会遗漏原始 HTML 中的内容。我想尽可能完整地保留原始 HTML,因为人们可能仍在我产品的另一端进行设计,如果他们看到的 HTML 看起来与他们尝试生成的内容大不相同,那可以是个问题。 -
很抱歉应该说“因为无效的 HTML 仍然可以显示...”
标签: c++ html-parsing