Windows phone 8 HTML解析单个表/不是所有正在解析的数据?

Windows phone 8 HTML解析单个表/不是所有正在解析的数据?,windows-phone-8,html-parsing,html-agility-pack,Windows Phone 8,Html Parsing,Html Agility Pack,对于WindowsPhone8的开发,我是个新手,我一直在玩弄一些东西,作为我正在开发的应用程序的一部分 现在我正试图解析一个网站上的信息,比如RuneScape 07 High Scores- 我使用的是HTML Agility Pack,我能够解析一些数据(下至木刻),但传递的任何内容都不会出现吗?(这是我的列表框的大小吗?) 理想情况下,我希望能够单独解析表信息,而不是像这样在一个块中解析: public MainPage() { InitializeCompone

对于WindowsPhone8的开发,我是个新手,我一直在玩弄一些东西,作为我正在开发的应用程序的一部分

现在我正试图解析一个网站上的信息,比如RuneScape 07 High Scores-

我使用的是HTML Agility Pack,我能够解析一些数据(下至木刻),但传递的任何内容都不会出现吗?(这是我的列表框的大小吗?)

理想情况下,我希望能够单独解析表信息,而不是像这样在一个块中解析:

public MainPage()
    {
        InitializeComponent();
        HtmlWeb.LoadAsync("http://services.runescape.com/m=hiscore_oldschool/hiscorepersonal.ws?user1=zezima", DownLoadCompleted);
    }

    void DownLoadCompleted(object sender, HtmlDocumentLoadCompleted e)
    {
        if(e.Error == null)
        {
            HtmlDocument doc = e.Document;
            if (doc != null)
            {
                var result = doc.DocumentNode.SelectNodes("//div[@id='contentHiscores']");
               foreach (var htmlNode in result)
               {
                   lBox.Items.Add(htmlNode.InnerText);
               }
            }
        }
但是如果我尝试使用

var result = doc.DocumentNode.SelectNodes("//div[@id='contentHiscores']/table/tbody/tr[5]/td[2]");
我得到一个NullReferenceException


这是可能的还是我做错了什么?

您可能依赖于FireBug或Chrome等开发工具。。。确定要查找的节点的XPATH

您确实可以这样做,因为这些工具提供的XPATH对应于内存中的HTMLDOM,而HTMLAgility包只知道服务器返回的原始HTML

您需要做的是查看返回的内容(或者只是查看源代码)。例如,您将看到没有TBODY元素。所以你想找到任何有区别的东西,比如说

下面是一个似乎有效的代码:

// get all TD nodes with ALIGN attribute set to left
foreach (var node in doc.DocumentNode.SelectNodes("//div[@id='contentHiscores']//td[@align='left']"))
{
    var item = lBox.Items.Add(node.InnerText.Trim());
    // use an 'XPATH axe': get all sibling TD nodes with ALIGN attribute set to 'right'
    foreach (var sibling in node.SelectNodes("following-sibling::td[@align='right']"))
    {
        item.SubItems.Add(sibling.InnerText.Trim());
    }
}

是result为null还是InnerText属性?它的result为null,当涉及到foreach时,它在尝试访问特定点时会中断。如果您稍微中断它,当您得到一个非null结果时,会删除每个子查询?谢谢!这对我帮助很大,我现在有了更大的理解!)最后一件可能听起来很愚蠢的事情——如果我按原样实现,我会得到一个
无法将void赋值给隐式类型的局部变量
错误,该错误与var item=lbox.x.x有关。这与我的
void DownLoadCompleted
回拨有关,还是其他原因?在我的课程中,我们还没有真正涵盖VAR,所以我可能比自己领先了。:)@SimonMourier@Optimistic-哦,那只是为了样品。这段代码适用于Windorms表单(并添加一个项+一堆子项),但在您的平台上,这意味着添加不会返回任何结果。