WPF将datagrid绑定到Web响应中返回的xml

时间:2013-05-02 14:36:24

标签: wpf xml datagrid bind

我从Web请求获取此格式的xml,但我无法将其绑定到wpf中的数据drid。

这是我的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;

1 个答案:

答案 0 :(得分: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; }

}