以下是5个表中的一个表:
<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子句吗?
然后我结束了这两个问题:
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();
是否可以将这两个查询结合起来? 我将如何将其转换为lambda表达式? 我刚刚开始学习这些东西,我想知道它是如何完成的,以便将来我不会有这些问题。
O,还有一个问题......是否有人知道任何图形控件,因为我必须在图表中显示这些值。 我从Microsoft Chart Controls开始,但是我在设置它时遇到了麻烦。 因此,如果有任何人有任何经验,我想知道如何设置它,所以x轴将显示所有值不是每一秒...例如: 如果我有:10.03.2009,24.03.2009,07.04.2009,21.04.2009,05.05.2009,06.05.2009 它仅显示:10.03.2009,07.04.2009,05.05.2009,等。
我将数据绑定到图形:
chart1.Series["Series1"].Points.DataBindXY(date, price);
对于我的拳头帖子我有很多疑问......呵呵,希望我不是模糊不清的东西。
感谢任何回复!
答案 0 :(得分:0)
对于此类CodePlex项目,请考虑将您的问题直接发布到他们的讨论区。通常这是联系开发人员的最佳方式。