【问题标题】:Parsing HTML/CSS/PHP File(s)解析 HTML/CSS/PHP 文件
【发布时间】:2011-03-11 12:51:39
【问题描述】:

我需要某种库,可能是 HTMLAgilityPack?可以解析 HTML 文件和 CSS 文件。但这有点棘手,因为 HTML(PHP) 文件中可能包含 PHP 代码,也可能包含 CSS 代码,所以在地狱没有办法在没有一些帮助的情况下我什至尝试自己解决这个问题图书馆。

我在 Visual Studio Express 2010 中使用 C#/WinForms。到目前为止,我能找到的唯一一个是 HTML AgilityPack,它没有我能找到的文档,而且我不确定它是否能满足我的所有需求做。

我的确切要求是找到一种方法来解析 HTML 文件,循环遍历每个标签,获取其内容,获取所有属性和值等,并对它们中的每一个进行处理。

你以前见过这样的图书馆吗?有人可以就如何解决这个问题提供一些帮助/建议吗?我并不是真的在寻找完美,只是简单和多样。

【问题讨论】:

  • 如果您只关心 HTML 元素,那么 PHP 和 CSS 应该不是问题。该代码可能只是<pre> 中的文本。除非你也需要解析 PHP,否则 HAP 可以解决问题。

标签: c# .net html css winforms


【解决方案1】:

HTML 敏捷包将允许您按照您的描述循环遍历元素。文档有点薄,但它是在 XmlDocument 类之后建模的,这大大简化了学习曲线。使用 XPath 查询选择元素。有一个使用here的小例子。

下面是一些遍历 HTML 文档中所有元素的示例代码(注意这包括文本元素、<style> 元素等):

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(someHtmlString);

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("*") ?? Enumerable.Empty<HtmlNode>()) {
    var contents = node.InnerHtml;
    foreach (var attribute in node.Attributes) {
        var name = attribute.Name;
        var value = attribute.Value;
    }
}

This question 解释了如何处理 PHP 标签(您可能想忽略或提取它们)。

【讨论】:

  • 是的,别忘了?? Enumerable.Empty&lt;HtmlNode&gt;() bit....(比我的解决方案更好!+1)..这是我对 HAP 最大的不满。
【解决方案2】:

摆脱 PHP 代码应该不难,并且可能使用正则表达式来完成(基本上,您只是想去掉 &lt;?php?&gt; 之间的任何内容)。

就 HTML 而言,CSS 只是文本数据,因此您可以解析 HTML,将每个 &lt;style&gt; 标记的内容提取为字符串,然后使用 CSS 解析器进行解析(如果您关心的话)关于 CSS 的内容)。

我之前没有听说过 Html Agility Pack,但它看起来可以完成这项工作,并且有 a couple 的 SO 答案推荐它。

我还找到了关于 CSS 解析器的 this SO question,以防你也需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 2011-04-06
    • 2011-09-08
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 2019-01-11
    相关资源
    最近更新 更多