我从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;
答案 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; }
}