2012-12-21 51 views
0

我有一個使用名爲「flights」的XmlNodeList的foreach循環。所以在foreach本身看起來是這樣的:將foreach循環更改爲包含XmlNode的方法

foreach (XmlNode flight in flights) 
     { 
     *code* 
     } 

,並在此的foreach循環我使用這個(我在這裏設置一個標籤)獲得幾個字符串:

callsign.Text = flight.Attributes.GetNamedItem("callsign").Value; 

但現在,我不想一個foreach了,我需要使用相同的代碼作爲方法。但是,當我重寫上述的foreach符合

public void CreateFlight()

它說無處不在,我現在用的是flight.Attributes.GetNamedItem等「名‘飛行’並不在當前的背景下存在」。

+3

所以你還沒有在你的範圍中聲明變量「flight」。沒有剩下的代碼,我不能告訴你你沒有把它放在哪裏。 –

+1

那麼你需要一個'XmlNode'來獲取屬性......它不是全部清除你期望得到的屬性。 –

+1

您不僅*重寫*而且*刪除*以前的語句,所以您錯過了該變量。那是。 – Tigran

回答

2

您需要將flight對象傳入您的方法或在該方法內創建一個新對象。鑑於名稱我懷疑後者:

public void CreateFlight() 
{ 
    XmlNode flight = new XmlNode(); 

    // The rest of your code 

    // Do something with the flight object? 
} 

但是,這隻會創建一個空的對象,你需要從某處填充。然而,您的使用情況和評論暗示你需要的東西是這樣的:

public string CreateFlight(XmlNode flight) 
{ 
    return flight.Attributes.GetNamedItem("callsign").Value; 
} 

那麼你還是這樣稱呼它:

foreach (XmlNode flight in flights) 
{ 
    string callSign = CreateFlight(flight); 
} 
+0

這看起來不錯,但是這似乎創建了一個空的XmlNode。我需要一個XmlNode,其中包含第一行中提到的來自XmlNodeList的一些數據。有一個XmlNodeList「航班」,其中有一個xml路徑設置爲「flight」元素。該航班看起來像這樣: 和在這種方法我得到所有這些信息。 –

+0

@MarekBuchtela您需要將這些數據傳入您的方法並閱讀相關信息。 – ChrisF

2

事情是這樣的:

public string CreateFlight(XmlNode flight) 
{ 
    return flight.Attributes.GetNamedItem("callsign").Value; 
} 

用法:

callsign.Text = CreateFlight(flight); 
2

更改CreateFlight方法接受名爲flight的參數XmlNode。當您撥打CreateFlight時,傳入要從中提取數據的節點。