2015-01-04 42 views
5

Tôi đang cố gắng sử dụng HtmlAgilityPack để tìm các phần tử trong trang web. Vấn đề của tôi là như sau:HtmlAgilityPack.HtmlNode không có định nghĩa cho SelectNodes

Tôi tạo ra một ứng dụng Windows 8 phổ cập (C#)

Với Manager NuGet Tôi nói thêm:

using System.Net.Http; 
using HtmlAgilityPack; 

Sau đó, tôi đã làm:

string htmlPage; 
using (var client = new HttpClient()) 
{ 
    htmlPage = await client.GetStringAsync("http://www.domain.de/"); 
} 

HtmlDocument myDocument = new HtmlDocument(); 
myDocument.LoadHtml(htmlPage); 

//this line results an error @ "SelectNodes" 
var metaTags = myDocument.DocumentNode.SelectNodes("//meta"); 

Nhưng studio trực quan cho biết:

Error 1 'HtmlAgilityPack.HtmlNode' does not contain a definition for 'SelectNodes' 

Tôi đã googled vấn đề nhưng tất cả các trang web chỉ giải quyết một vấn đề mà mã cho biết "DocumentElement" thay vì "DocumentNode".

Bạn có bất kỳ gợi ý nào không?

Cảm ơn!

Trả lời

8

Có, SelectNodes không khả dụng trên WP8 nhưng bạn có thể sử dụng;

var metaTags = myDocument.DocumentNode.Descendants("meta"); 

thay thế.

+0

Cảm ơn bạn rất nhiều! Vấn đề được giải quyết! :-) –

+3

Được rồi, nhưng làm thế nào để bạn thực hiện các truy vấn XPath phức tạp hơn? – BrainSlugs83

+1

Để thực hiện điều tương đương với doc.DocumentNode.SelectNodes ("// div [@ itemprop = 'softwareVersion']") sử dụng doc.DocumentNode.Descendants ("div"). Trong trường hợp (p => p .GetAttributeValue ("itemprop", "") == "softwareVersion") –

Các vấn đề liên quan