0

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>

これが私のコードです。データセットに保存し、データグリッドにバインドしていますが、すべてではなく列にのみ表示されます。

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

DataSet set = new DataSet();            

set.ReadXml(response.GetResponseStream());            

return set;
4

1 に答える 1

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; }

}
于 2013-05-03T10:53:46.000 に答える