首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Windows8应用中使用Html Agility Pack?

如何在Windows8应用中使用Html Agility Pack?
EN

Stack Overflow用户
提问于 2012-11-18 23:41:33
回答 2查看 1K关注 0票数 1

首先,我想说的是,我对c#和Windows8应用程序还很陌生。所以,求你,别对我太苛刻。

我有以下代码来提取一些图像urls,并将它们保存在一个XML文件中。我正在使用Html Agility Pack,但当我尝试在Windows 8应用程序中使用代码时,它不起作用。我知道我必须从这里使用Fizzler Html Agility Pack:http://fizzlerex.codeplex.com/releases/view/89833,但我不知道哪里出了问题。我使用的是visual studio 2012,它不能识别以下元素:

代码语言:javascript
复制
***WebClient*** x = new ***WebClient***();  
***XmlDocument*** output = new ***XmlDocument***();  
***XmlElement*** imgElements = output.CreateElement("ImgElements");  
foreach(HtmlNode link in document.***DocumentElement***.SelectNodes("//img[contains(@src, '_412s.jpg')]"));                                             
***out***.Save(@"C:\test.xml");

代码:

代码语言:javascript
复制
using HtmlAgilityPack;
using Fizzler;
using Fizzler.Systems.HtmlAgilityPack;
using System.Xml;

public void Images()
{
    WebClient x = new WebClient();
    string source = x.DownloadString(@"http://www.google.com");
    HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
    document.Load(source);
    XmlDocument output = new XmlDocument();
    XmlElement imgElements = output.CreateElement("ImgElements");
    output.AppendChild(imgElements);
    foreach(HtmlNode link in document.DocumentElement.SelectNodes("//img[contains(@src, '_412s.jpg')]"))
    {
        XmlElement img = output.CreateElement(link.Name);
        foreach(HtmlAttribute a in link.Attributes)
        {
            img.SetAttribute(a.Name, a.Value);
        }
        imgElements.AppendChild(img);
    }
    out.Save(@"C:\test.xml");
}

你能帮帮我吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-19 13:42:20

尝试如下所示:

代码语言:javascript
复制
HttpClientHandler handler = new HttpClientHandler();
HttpClient client = new HttpClient(handler as HttpMessageHandler) { BaseAddress = new Uri(@"http://www.google.com") };
var r = await client.GetAsync(client.BaseAddress);
string html;
if (r.IsSuccessStatusCode) html = await r.Content.ReadAsStringAsync();
票数 0
EN

Stack Overflow用户

发布于 2012-11-19 04:48:27

代码语言:javascript
复制
out.Save(@"C:\test.xml");

应该是:

代码语言:javascript
复制
output.Save(@"C:\test.xml");

然后,您需要将以下两个名称空间添加到代码文件的顶部:

代码语言:javascript
复制
using System.Xml;
using System.Net;

这些错误与Windows 8无关。它们在任何版本中都是错误。我不知道为什么你需要从WebClient类切换到HttpClient类,因为它们在Windows8中都受支持,但是,如果你想使用HttpClient类,如下所示应该可以:

代码语言:javascript
复制
HttpClient x = new HttpClient();
Task<string> t = x.GetStringAsync(@"http://www.google.com");
t.Wait();
string source = t.Result;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13441637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档