5 つのうちの 1 つの表を次に示します。
<h3>marec - maj 2009</h3>
<div class="graf_table">
<table summary="layout table">
<tr>
<th>DATUM</th>
<td class="datum">10.03.2009</td>
<td class="datum">24.03.2009</td>
<td class="datum">07.04.2009</td>
<td class="datum">21.04.2009</td>
<td class="datum">05.05.2009</td>
<td class="datum">06.05.2009</td>
</tr>
<tr>
<th>Maloprodajna cena [EUR/L]</th>
<td>0,96000</td>
<td>0,97000</td>
<td>0,99600</td>
<td>1,00800</td>
<td>1,00800</td>
<td>1,01000</td>
</tr>
<tr>
<th>Maloprodajna cena [SIT/L]</th>
<td>230,054</td>
<td>232,451</td>
<td>238,681</td>
<td>241,557</td>
<td>241,557</td>
<td>242,036</td>
</tr>
<tr>
<th>Prodajna cena brez dajatev</th>
<td>0,33795</td>
<td>0,34628</td>
<td>0,36795</td>
<td>0,37795</td>
<td>0,37795</td>
<td>0,37962</td>
</tr>
<tr>
<th>Trošarina</th>
<td>0,46205</td>
<td>0,46205</td>
<td>0,46205</td>
<td>0,46205</td>
<td>0,46205</td>
<td>0,46205</td>
</tr>
<tr>
<th>DDV</th>
<td>0,16000</td>
<td>0,16167</td>
<td>0,16600</td>
<td>0,16800</td>
<td>0,16800</td>
<td>0,16833</td>
</tr>
</table>
</div>
テーブル ヘッダーが DATUM および Maloprodajna cena [EUR/L] である値を抽出する必要があります。Agility HTML パックを使用しています。
this.htmlDoc = new HtmlAgilityPack.HtmlDocument();
this.htmlDoc.OptionCheckSyntax = true;
this.htmlDoc.OptionFixNestedTags = true;
this.htmlDoc.OptionAutoCloseOnEnd = true;
this.htmlDoc.OptionOutputAsXml = true; // is this necessary ??
this.htmlDoc.OptionDefaultStreamEncoding = System.Text.Encoding.Default;
これらの値を取得するのに苦労しました。私はから始めました:
var query = from html in doc.DocumentNode.SelectNodes("//div[@class='graf_table']").Cast<HtmlNode>()
from table in html.SelectNodes("//table").Cast<HtmlNode>()
from row in table.SelectNodes("tr").Cast<HtmlNode>()
from cell in row.SelectNodes("th|td").Cast<HtmlNode>()
select new { Table = table.Id, CellText = cell.InnerHtml };
しかし、テーブル ヘッダーが DATUM および Maloprodajna cena[EUR/L] である値のみを選択する方法を見つけることができませんでした。where句でそれを行うことは可能ですか?
次に、次の 2 つのクエリで終了しました。
var date = (from d in htmlDoc.DocumentNode.SelectNodes("//div[@class='graf_table']//table//tr[1]/td")
select DateTime.Parse(d.InnerText)).ToArray();
var price = (from p in htmlDoc.DocumentNode.SelectNodes("//div[@class='graf_table']//table//tr[2]/td")
select double.Parse(p.InnerText)).ToArray();
これら 2 つのクエリを組み合わせることは可能ですか? そして、それをラムダ式に変換するにはどうすればよいですか? 私はそれらのことを学び始めたばかりであり、将来それらの質問がないように、それがどのように行われるかを知りたい.
O、もう 1 つ質問があります...グラフ コントロールを知っている人はいますか? Microsoft Chart Controls から始めましたが、設定に問題があります。したがって、誰かがそれを経験したことがある場合は、x軸が毎秒ではなくすべての値を表示するように設定する方法を知りたいです... 2009 年 4 月 21 日、2009 年 5 月 5 日、2009 年 5 月 6 日: 10.03.2009、07.04.2009、05.05.2009 など。
次のようにデータをグラフにバインドします。
chart1.Series["Series1"].Points.DataBindXY(date, price);
私は私の最初の投稿のためにたくさんの質問をしています...へへ、私が不明瞭でなかったことを願っています。返信ありがとうございます。