【问题标题】:Using Html Agility Pack for parsing Html使用 Html Agility Pack 解析 Html
【发布时间】:2012-06-14 12:15:20
【问题描述】:

我有这个 html

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<div style="background: #5b7fa6; padding: 2px 3px 3px 3px; border-bottom: 1px solid #6f91bb;">
<b style="color: #FFFFFF;">Gain Access to VK</b>
</div>
<div style="border-top: 1px solid #4a6a91; padding:10px;">
<div style="background: #ffffff; border: 1px solid #adbbca; padding: 5px;'">
<form method="POST" action="https://login.vk.com/?act=login&amp;soft=1&amp;utf8=1">
</form>
</div>  
</div>
</body></html>

我想在表单元素中获取 action 属性的值。 我使用此代码

    HtmlNode formNode = htmlDoc.DocumentNode.SelectSingleNode("html/body/div[2]/div/form");
    if (formNode != null)
    {
        var action = formNode.GetAttributeValue("action", string.Empty);
        if(!string.IsNullOrEmpty(action))
        {
            //to do 
        }
    }

但是 formNode 为空。我认为'DOCTYPE'中的问题。 如何解决这个问题?

【问题讨论】:

    标签: c# c#-4.0 html-parsing html-agility-pack


    【解决方案1】:

    既然form标签只出现一次,为什么不试试这样的东西

    HtmlNode formNode = htmlDoc.DocumentNode.SelectSingleNode("//form");
    

    【讨论】:

    • 对不起。此表达式中没有错误。错误在这里 streamReader.ReadToEnd();然后 HtmlDocument htmlDoc = new HtmlDocument(); htmlDoc.Load(sr); 但是方法 ReadToEnd 将属性 EndOfStream 设置为 true 并且加载了不正确的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2014-07-13
    • 2014-08-31
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多