1

まず第一に、私はc#とWindows8アプリに不慣れであると言いたいです。だから、どうか、私を苦しめないでください。

いくつかの画像のURLを抽出し、それらをXMLファイルに保存するための次のコードがあります。Html Agility Packを使用していますが、Windows 8アプリケーションでコードを使用しようとすると、機能しません。http://fizzlerex.codeplex.com/releases/view/89833からFizzlerHtmlAgility Packを使用する必要があることはわかっていますが、何が問題なのかわかりません。Visual Studio 2012を使用していますが、次の要素を認識しません。

***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");

コード:

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");
}

手伝ってくれませんか?

ありがとうございました !

4

2 に答える 2

2
out.Save(@"C:\test.xml");

する必要があります:

output.Save(@"C:\test.xml");

次に、次の2つの名前空間をコードファイルの先頭に追加する必要があります。

using System.Xml;
using System.Net;

これらのエラーは、Windows8とは何の関係もありません。どのバージョンでもエラーになります。どちらもWindows8でサポートされているためWebClient、クラスからクラスに切り替える必要がある理由はわかりませんが、クラスを使用する場合は、次のように機能するはずです。HttpClientHttpClient

HttpClient x = new HttpClient();
Task<string> t = x.GetStringAsync(@"http://www.google.com");
t.Wait();
string source = t.Result;
于 2012-11-18T20:48:27.277 に答える
0

次のようなものを試してください。

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();
于 2012-11-19T05:42:20.490 に答える