通過使用下面的代碼我解決我的問題。
public class DynamicDictionary
{
private IDictionary<string, string> dictionaryKeyValuePair;
public DynamicDictionary()
{
dictionaryKeyValuePair = new Dictionary<string, string>();
}
public void AddKeyValuePair(string key, string value)
{
dictionaryKeyValuePair.Add(key, value);
}
public string GetValueByKeyName(string Key)
{
string value = "";
foreach (var keyValuePair in dictionaryKeyValuePair)
{
if (keyValuePair.Key.Equals(Key, StringComparison.CurrentCultureIgnoreCase))
{
return keyValuePair.Value;
}
}
return value;
}
}
價值分配到列表
private Collection<string> tickerAtributesList=new Collection<string>();
tickerAtributesList.add("date");
tickerAtributesList.add("title");
tickerAtributesList.add("description");
XmlNodeList nodes = xmlDoc.SelectNodes("rss/channel/item");
keyValuePair = new Collection<DynamicDictionary>();
foreach (XmlNode node in nodes)
{
DynamicDictionary tempDynamicDictionary = new DynamicDictionary();
foreach (string tickerAtribute in tickerAtributesList)
{
tempDynamicDictionary.AddKeyValuePair(tickerAtribute, ParseDocElements(node, tickerAtribute));
}
keyValuePair.Add(tempDynamicDictionary);
}
和下面是如何使用
foreach (var item in keyValuePair)
{
foreach (string tickerAtribute in tickerAtributesList)
{
string tempAtributeVal = item.GetValueByKeyName(tickerAtribute);
//my code
}
}
爲什麼你關心的變量叫什麼名字?爲什麼不只有一個字符串變量,並且當你將它序列化爲XML時,在那一點使用適當的元素名稱? (我還建議*不*具有公共字段或可變結構,但這是另一回事)。我懷疑這裏的問題是您想要序列化自動發生,但聽起來您需要手動執行以獲取自定義元素名稱。 LINQ to XML使得它非常簡單。 –
也許是http://stackoverflow.com/questions/3862226/dynamically-create-a-class-in-c-sharp – Mitja
的副本@JonSkeet感謝主意,但一個rss包含大量tags.I不考慮爲每個輸入採石是可行的。 – madan