2016-04-24 7 views
1

マイモデルhtmlagilitypack:連結方式の2 SELECTNODESが

public class Event 
{ 
    public string DateOfEvent { get; set; } 
    public string Teams { get; set; } 
    public string Championship { get; set; } 
} 

DateOfEventとチームを私はこのコードを使用してテーブルから解析:

var matches = currentData.DocumentNode.SelectNodes("//tr[@class=' event-header']"). 
       Select(tr => new Event() 
       { 
        DateOfEvent = 
        tr.SelectNodes("./td[1]/table/tr[1]/td[2]//text()[normalize-space()]") 
          .Single() 
          .InnerText.Trim(), 
        Teams = tr.SelectNodes("./td[1]/table/tr[1]/td[3]//text()[normalize-space()]") 
          .Single() 
          .InnerText.Trim(), 
       }); 

私はDateOfEventとチームと多くのレコードを持っています。しかし、私はこれらすべてのフィールドフィールド選手権に追加する必要がありますが、そのフィールドはテーブルから解析されません。

var b = currentData.DocumentNode.SelectNode("//div[@class ='sport-champ']") 
           .Select(p=> new Event() 
        { 
         Championship = ...... 
        }); 

どうすればいいですか?

+0

?位置/インデックスまたはHTMLから見ることができるより良いルールがありますか? – har07

答えて

0

私が正しく理解していれば、あなたはEventプロパティDateOfEventを持つオブジェクト、Teams、およびChampionshipのセットを選択します。 DateOfEventTeamsは複数の行から来ますが、1つはChampionshipで、それぞれ同じですか?その場合

は、単に最初Championshipを取得:その後、

var championship = currentData.DocumentNode.SelectNode("//div[@class ='sport-champ']") 
    .InnerText.Trim(); 

と行からあなたSelectの操作を行います。DateOfEventとチームへの各選手権のデータをリンクする方法

var matches = currentData.DocumentNode.SelectNodes("//tr[@class=' event-header']"). 
    Select(tr => new Event() 
    { 
     DateOfEvent = tr.SelectNodes("./td[1]/table/tr[1]/td[2]//text()[normalize-space()]") 
      .Single() 
      .InnerText.Trim(), 
     Teams = tr.SelectNodes("./td[1]/table/tr[1]/td[3]//text()[normalize-space()]") 
      .Single() 
      .InnerText.Trim(), 
     Championship = championship 
    });