GetAttribute函数在搜索“class”属性时不返回任何值,它始终为空

时间:2017-05-29 08:57:47

标签: c# html-agility-pack getattribute htmlelements windev

我目前正在开发一个使用HTTP requets和webBrowser控件的 C#库。我的库用于 WinDev 程序,并在WinDev应用程序和Web平台(agenda.ch)之间创建直接链接。我需要使用一些WebScraping,所以首先开始使用 HtmlAgilityPack 并且工作正常,但是当在WinDev上运行我的库时,当HtmlAgilityPack HtmlDocument被实例化时,库突然停止...我然后决定删除HtmlAgilityPack并直接使用System.Windows.Forms HtmlElement 类来检索所需信息。

这是我遇到问题的地方: 当使用foreach循环检查文档中的每个HtmlElement时,我只能使用GetAttribute()函数来检查它的类值。但由于某种原因,返回的值是总是空的。我做了很多不同的测试,没有一个给出逻辑响应,这就是我转向StackOverflow的原因。我尝试使用另一个属性名称,如id,并且工作正常。我无法理解为什么无法恢复类属性值。

private void RecoverClients(HtmlDocument source)
    {
        HtmlDocument doc = source;

        HtmlElementCollection clientSection = doc.GetElementsByTagName("DIV");
        HtmlElement clients;

        foreach (HtmlElement element in clientSection)
        {
            // Tests  
            var test = element.GetAttribute("class"); // Always empty
            var test2 = element.GetAttribute("id"); // When has id attribute, works

            if (element.GetAttribute("class") == "customer_list") // The code I use
            {
                clients = element;
                break;
            }
        }

这是HTML代码的一部分,由WebBrowser恢复并发送到RecoverClients函数。

<DIV class="customer_list">
<UL>
  <LI data-id="xxxx"><
  A href="#customers/xxxx" data-action="show">
  <STRONG>ClientName</STRONG>ClientSirName<BR><SMALL>client1@tech.ch</SMALL>         
  </A>
  </LI>
  <LI data-id="xxxx"><
  A href="#customers/xxxx" data-action="show">
  <STRONG>ClientName</STRONG>ClientSirName<BR><SMALL>client2@tech.ch</SMALL>         
  </A>
  </LI>
</UL>
</DIV>

如果您已遇到此类问题,或者我没有使用正确的技术来恢复带有类名的HtmlElement,请告诉我。

请注意我不能使用HtmlAgilityPack,以前工作正常,但在WinDev中实现库后会导致问题......

0 个答案:

没有答案