【问题标题】:Cannot get HTML Attributes from HTML file (C#/WinForms)无法从 HTML 文件中获取 HTML 属性 (C#/WinForms)
【发布时间】:2011-03-12 00:22:13
【问题描述】:

我想出了以下代码:

private void button1_Click(object sender, EventArgs e)
{
    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    using (var o = new OpenFileDialog())
    {
        if (o.ShowDialog() == DialogResult.OK)
            doc.Load(o.FileName);
    }


    foreach (HtmlAgilityPack.HtmlAttribute att in doc.DocumentNode.Attributes)
    {
        label1.Text += Environment.NewLine +
            att.Name + " " + att.Value;
    }
}

但它什么也没做。没有错误,没有异常,它可以编译并运行。但是,正如您所看到的,从 foreach 循环内部,它应该不断将找到的属性及其值添加到 label1.Text 控件,但事实并非如此。什么都没有发生!

我做错了吗?有人可以帮忙吗?

谢谢

【问题讨论】:

    标签: c# .net html winforms html-agility-pack


    【解决方案1】:

    通过迭代doc.DocumentNode.Attributes,您试图获取根元素 (DocumentNode) 的属性,它是一个占位符,包含您的 <html> 标记(可能还有一些相邻节点,如 cmets 和空白)。这没有多大意义。

    你想准确提取什么?

    【讨论】:

    • 啊,现在我明白了。在这个示例中,我并没有真正尝试做任何事情。我只是想弄清楚事情的意义,看看我能不能做点什么。由于没有文档,而且 AgilityPack 网站上唯一的示例代码不起作用,我有点需要猜测所有内容。对象查看器由于某种原因没有打开,所以我不能用它来查看它是如何工作的。
    • 那么您可能应该首先尝试遍历节点 (ChildNodes),或者使用 XPath 表达式。有一个good tutorial over here
    • @Lucifer - 这里有一个可用的文档:htmlagilitypack.codeplex.com/releases/view/44954 但基本上,HAP API 旨在模仿 System.Xml API。属性概念完全一样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-11
    • 2021-10-28
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多