2013-05-02 60 views
1

我得到這種格式的xml從網絡請求的響應,但我無法綁定它惠普數據滴在wpf。WPF綁定數據網格與xml在web響應中返回

這裏是我的xml:

<population> 
<name>Tram, Joshua </name> 
    <id>83804</id> 
    <hcp>Dr. Krueger</hcp> 
    <symptoms>4</symptoms> 
    <range>1/17/13 - 4/13/13</range> 
    <last7>5</last7> 
    <connect>41380</connect> 
    <engage>5</engage> 
    <daysin>160</daysin> 
    <education>0.67</education> 
    <recco>Encourage Education</recco> 
    <name>Riess, Chuck </name> 
    <id>73403</id> 
    <hcp>Dr. Vockell</hcp> 
    <symptoms>4</symptoms> 
    <range>2/1/13 - 2/14/13</range> 
    <last7>5</last7> 
    <connect>41332</connect> 
    <engage>5</engage> 
    <daysin>179</daysin> 
    <education>0.74</education> 
    <recco>Encourage Tracking</recco> 
    <name>Park, Teruyuki </name> 
    <id>69235</id> 
    <hcp>Dr. Smithen</hcp> 
    <symptoms>3</symptoms> 
    <range>4/3/13 - 4/13/13</range> 
    <last7>5</last7> 
    <connect>41384</connect> 
    <engage>5</engage> 
    <daysin>35</daysin> 
    <education>0.15</education> 
    <recco> </recco> 
    </population> 

這裏是我的代碼,我將它存儲在數據集中,並與DataGrid的約束力,但只顯示在列不是全部。

WebRequest request = HttpWebRequest.Create(url); 
WebResponse response = request.GetResponse();   

DataSet set = new DataSet();    

set.ReadXml(response.GetResponseStream());    

return set; 
+0

的XML似乎奇怪的是,至少可以說..無論如何,你有什麼嘗試?您詢問關於綁定到WPF數據網格,但您提供的代碼不顯示任何WPF相關行...... – RoelF 2013-05-02 14:42:30

+0

它看起來像是從XML中缺少標籤。每個標籤有多個實例(即,,等),就好像它們應該用另一個標籤包裝一樣。 – Murkaeus 2013-05-02 17:13:22

+0

沒有它的實際xml由webrequest – 2013-05-03 05:36:43

回答

1

我通過迭代上的XML元素和創建類的列表解決我的問題對象是這樣的:

public List<Population> GetData() 
    { 
     DataSet ds =null; 

     List<Population> populationList = new List<Population>(); 

     string url = "http://www.lyfechannel.com/channels/WIN946/get_population.php"; 

     WebRequest request = HttpWebRequest.Create(url); 

     WebResponse response = request.GetResponse(); 

     StreamReader reader = new StreamReader(response.GetResponseStream()); 

     XmlDocument doc = new XmlDocument(); 

     doc.LoadXml(reader.ReadToEnd()); 


     XmlNode rootNode = doc.SelectSingleNode("//population"); 

     XmlNodeList currentNodes = doc.SelectNodes("//name"); 

     var objPopulation = new Population[currentNodes.Count]; 

     if (currentNodes.Count != 0) 
     { 

      for (int i = 0; i < currentNodes.Count; i++) 
      { 
       objPopulation[i] = new Population(); 
       //objPopulation[i].Name = currentNodes[i].InnerText; 

      } 

     } 


     XmlNodeList idNodeList = doc.SelectNodes("//id"); 

     if (idNodeList.Count != 0) 
     { 

      for (int i = 0; i < idNodeList.Count; i++) 
      { 
       objPopulation[i] = new Population(); 
       objPopulation[i].ID = idNodeList[i].InnerText; 


       currentNodes = doc.SelectNodes("//name"); 


       if (currentNodes.Count != 0) 
       { 

        for (int ij = 0; ij < currentNodes.Count; ij++) 
        { 

         objPopulation[ij].Name = currentNodes[ij].InnerText; 

        } 

       } 


       currentNodes = doc.SelectNodes("//hcp"); 


       if (currentNodes.Count != 0) 
       { 

        for (int j = 0; j < currentNodes.Count; j++) 
        { 

         objPopulation[j].HCP = currentNodes[j].InnerText; 

        } 

       } 


       currentNodes = doc.SelectNodes("//symptoms"); 


       if (currentNodes.Count != 0) 
       { 

        for (int k = 0; k < currentNodes.Count; k++) 
        { 

         objPopulation[k].Symptoms = currentNodes[k].InnerText; 

        } 

       } 


       currentNodes = doc.SelectNodes("//range"); 


       if (currentNodes.Count != 0) 
       { 

        for (int l = 0; l < currentNodes.Count; l++) 
        { 

         objPopulation[l].Range = currentNodes[l].InnerText; 

        } 

       } 


       currentNodes = doc.SelectNodes("//last7"); 


       if (currentNodes.Count != 0) 
       { 

        for (int m = 0; m < currentNodes.Count; m++) 
        { 

         objPopulation[m].Last7 = currentNodes[m].InnerText; 

        } 

       } 


       currentNodes = doc.SelectNodes("//connect"); 


       if (currentNodes.Count != 0) 
       { 

        for (int n = 0; n < currentNodes.Count; n++) 
        { 

         objPopulation[n].Connect = currentNodes[n].InnerText; 

        } 

       } 


       currentNodes = doc.SelectNodes("//engage"); 


       if (currentNodes.Count != 0) 
       { 

        for (int o = 0; o < currentNodes.Count; o++) 
        { 

         objPopulation[o].Engage = currentNodes[o].InnerText; 

        } 

       } 


       currentNodes = doc.SelectNodes("//daysin"); 


       if (currentNodes.Count != 0) 
       { 

        for (int p = 0; p < currentNodes.Count; p++) 
        { 

         objPopulation[p].DaysIn = currentNodes[p].InnerText; 

        } 

       } 


       currentNodes = doc.SelectNodes("//education"); 


       if (currentNodes.Count != 0) 
       { 

        for (int q = 0; q < currentNodes.Count; q++) 
        { 

         objPopulation[q].Education = currentNodes[q].InnerText; 

        } 

       } 


       currentNodes = doc.SelectNodes("//recco"); 


       if (currentNodes.Count != 0) 
       { 

        for (int r = 0; r < currentNodes.Count; r++) 
        { 

         objPopulation[r].Recco = currentNodes[r].InnerText; 

        } 

       } 

       populationList.Add(objPopulation[i]); 

      } 

     } 

     MyGrid.ItemsSource = populationList; 


    } 

,這裏是我的類代碼:

class Population 
{ 

    public string Name { get; set; } 
    public string ID { get; set; } 
    public string HCP { get; set; } 
    public string Symptoms { get; set; } 
    public string Range { get; set; } 
    public string Last7 { get; set; } 
    public string Connect { get; set; } 
    public string Engage { get; set; } 
    public string DaysIn { get; set; } 
    public string Education { get; set; } 
    public string Recco { get; set; } 

}