web-dev-qa-db-ja.com

HtmlAgilityPack:パス内の不正な文字

このコードで「パスに不正な文字が含まれています」というエラーが発生します。エラーが発生している行のコメントとして、「ここでエラーが発生している」と述べました。

var document = htmlWeb.Load(searchUrl);
var hotels = document.DocumentNode.Descendants("div")
             .Where(x => x.Attributes.Contains("class") &&
             x.Attributes["class"].Value.Contains("listing-content"));

int count = 1;
foreach (var hotel in hotels)
{
    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.OptionFixNestedTags = true;
    htmlDoc.Load(hotel.InnerText);      // Error Occuring Here //
    if (htmlDoc.DocumentNode != null)
    {
        var hotelName = htmlDoc.DocumentNode.SelectNodes("//div[@class='business-container-inner']//div[@class='business-content clearfix']//div[@class='business-name-wrapper']//h3[@class='business-name fn org']//div[@class='srp-business-name']//a[0]");
        foreach (var name in hotelName)
        {
            Console.WriteLine(name.InnerHtml);
        }
    }
}
23
Pranab

文字列をロードするには、LoadHtmlメソッドを使用する必要があります。 Loadメソッドはfileからロードされます

htmlDoc.LoadHtml(hotel.InnerText);   
49
L.B

これは単に、 ファイルパス/名前に無効な文字 を含むファイルを読み込もうとしていることを意味します。

エラーはここにあります:

htmlDoc.Load(hotel.InnerText); 

..そのオーバーロードはファイルへのパスを予期しているため:

public void Load(string path)

LoadHtmlを使用してHTMLフラグメントをロードします。

public void LoadHtml(string html)
5
Simon Whitehead