1

C# でデータをグループ化します。html ファイルを解析し、すべてのデータを取得しました。次のようにグループ化します。

ここに画像の説明を入力

選択された行は親であり、次の子が含まれています。私が取り組んでいるコードは次のとおりです。

var uricontent = File.ReadAllText("TestHtml/Bew.html");
            var doc = new HtmlDocument(); // with HTML Agility pack
            doc.LoadHtml(uricontent);

            var rooms = doc.DocumentNode.SelectNodes("//table[@class='rates']").SelectMany(
                detail =>
                {

                    return doc.DocumentNode.SelectNodes("//td[@class='rate-description'] | //table[@class='rooms']//h2 | //table[@class='rooms']//td[@class='room-price room-price-total']").Select(
                        r => new
                        {
                            RoomType = r.InnerText.CleanInnerText(),
                        });
                }).ToArray();

RoomType には、HTML AgilityPack によって解析されるデータが含まれています。Pay & Save 、Best Available Room Only などの名前でそれらをグループ化するにはどうすればよいですか ...

HTML ファイルはこちら : http://notepad.cc/share/g0zh0TcyaG

ありがとうございました

4

1 に答える 1

0

3 つの XPath クエリを結合してから、"Rate Description" (別名: element : <td class="rate-description">) でそれらをグループ化する代わりに、別の方法でそれを行うことができます。

「Rate Description」に基づいて LINQ を選択し、射影部分で、相対 XPath を使用して現在の「Rate Description」の下にあるすべての部屋タイプと部屋料金を取得できます。

var rooms = 
    doc.DocumentNode
       .SelectNodes("//table[@class='rates']//tr[@class='rate']")
       .Select(r => new
         {
            RateType = r.SelectSingleNode("./td[@class='rate-description']")
                        .InnerText.CleanInnerText,
            RoomTypes = r.SelectNodes("./following-sibling::tr[@class='rooms'][1]//table[@class='rooms']//h2")
                         .Select(s => new
                         {
                            RoomType = s.InnerText.CleanInnerText,
                            Rate = s.SelectSingleNode(".//parent::td/following-sibling::td[@class='room-price room-price-total'][1]")
                                    .InnerText.CleanInnerText
                         }).ToArray()
         }).ToArray();

上記のいくつかの XPath クエリの開始時の通知期間。これはHtmlAgilityPack、クエリが current に対して相対的であることを示していますHtmlNode。結果は次のようになります。

ここに画像の説明を入力

于 2014-04-12T12:50:22.640 に答える