1
我正在使用以下代碼將HTML解析爲數組。如何檢查數組是否存在?
void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
var html = e.Result;
var doc = new HtmlDocument();
doc.LoadHtml(html);
var list = doc.DocumentNode.Descendants("div").ToList();
var node = doc.DocumentNode.Descendants("table")
.FirstOrDefault(x => x.Id == "departures")
.Element("tbody") .Elements("tr")
.Select(tr => tr.Elements("td")
.Select(td => td.InnerText).ToArray()).ToArray();
然後我用下面的代碼輸出到Texblock。
//first line
textBlock1.Text = node[0][0];
textBlock2.Text = node[0][1];
textBlock3.Text = node[0][2];
//Second line
textBlock4.Text = node[1][0];
textBlock5.Text = node[1][1];
textBlock6.Text = node[1][2];
//Third line
textBlock7.Text = node[2][0];
textBlock8.Text = node[2][1];
textBlock9.Text = node[2][2];
我的問題是這樣的:在HTML度過每一天的變化,所以有些時候沒有和[2],有時高達[12]。
我想知道的是我怎麼可以寫一個條件語句來檢查數組是否存在,只有當它有值時才輸出。
我已經嘗試了條件語句像下面,但它仍然顯示當沒有[2]或節點[1]的結果
if (node[2][0].length > 0)
{
textBlock1.Text = node[2][0];
}
任何幫助將apprecaited任何節點的未處理的異常。如果您需要澄清此問題,請告訴我。
你不能只檢查node.length是否大於0? – Egor
@Egor我試過了,但它不起作用。我猜是因爲在某些情況下節點[2],節點[3etc ...元素不存在。它是一個奇怪的。我也認爲節點長度條件會起作用。 – Rhys
一個核心問題似乎是文本框不是可變的,但是是固定的(box1,box2等)。考慮使用不同的控件,也許是一個列表控件的種類。然後'n'項可以統一添加(並且只使用循環結構)。文本框也可以動態創建,但這不會是我的第一選擇。 – 2011-09-16 00:24:38