2010-04-04 53 views
0

如何複製屬性的XML節點到特定的結構或陣列與一個命令 例如如何複製屬性的XML節點到特定的結構或陣列

public struct PossibilityJavamed 
    { 
     public string derv; 
     public string dervt; 
     public string num; 
     public string gend; 
    } 
    PossibilityJavamed tmpstructnew = tmpstruct; 
    ArrayList alstout = new ArrayList();// my array has some initial value 
    XmlNodeList nodeList; 
    nodeList = docHarf.SelectNodes("//adatesmi"); 
      for (int i = 0; i < nodeList.Count; i++) 
      { 


        tmpstructnew.derv = nodeList[i].Attributes["derv"].Value; 
        tmpstructnew.dervt = nodeList[i].Attributes["dervt"].Value; 
        tmpstructnew.num = nodeList[i].Attributes["num"].Value; 
        tmpstructnew.gend = nodeList[i].Attributes["gend"].Value; 
        alstout.Add(tmpstructnew); 
      } 

但我會做到這一點在一個命令

+0

你可能想舉一些例子說明僞代碼,所以我們可以幫助你。 – Nix 2010-04-04 15:45:14

+0

什麼版本的C#? – SLaks 2010-04-04 15:50:17

+0

我的c#版本是3.5 – jozi 2010-04-04 15:54:56

回答

2

就像這樣:

alstout.AddRange(docHarf.SelectNodes("//adatesmi") 
    .Select(n => new PossibilityJavamed { 
     derv = n.Attributes["derv"].Value, 
     dervt = n.Attributes["dervt"].Value, 
     num = n.Attributes["num"].Value, 
     gend = n.Attributes["gend"].Value 
    })); 
+0

我的數組在這個函數之前有一些值,並且你的回答失去了初始值 – jozi 2010-04-04 15:58:26

+0

你需要調用'AddRange'。看我的編輯。 – SLaks 2010-04-04 15:59:39

+0

ToList()位於錯誤的地方。事實上,在這種情況下你是否需要它? – 2010-04-04 16:04:53

2
 alstout.AddRange( (
       from n in docHarf.SelectNodes("//adatesmi") 
       select new PossibilityJavamed(){ 
        derv = n.Attributes["derv"].Value; 
        dervt = n.Attributes["dervt"].Value; 
        num = n.Attributes["num"].Value; 
        gend = n.Attributes["gend"].Value; 
       } 
      ).ToList()); 
+0

如何添加tmpstructnew到數組 – jozi 2010-04-04 15:56:11

+0

我的數組有一些值之前,這個函數和你的答案失去了初始值 – jozi 2010-04-04 15:57:42

+0

爲你增加了addrange。 – Nix 2010-04-04 16:07:14