简体   繁体   中英

pull data from xml and display in datagridview c#

I have the following xml -

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<ramp>
    <header>
        <version>2</version>
        <checksum>18290949</checksum>
    </header>
    <colors>
        <deep_red>
            <point>
                <intensity>0</intensity>
                <time>0</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>360</time>
            </point>
            <point>
                <intensity>19</intensity>
                <time>480</time>
            </point>
            <point>
                <intensity>37</intensity>
                <time>490</time>
            </point>
            <point>
                <intensity>51</intensity>
                <time>500</time>
            </point>
            <point>
                <intensity>47</intensity>
                <time>510</time>
            </point>
            <point>
                <intensity>60</intensity>
                <time>520</time>
            </point>
            <point>
                <intensity>60</intensity>
                <time>530</time>
            </point>
            <point>
                <intensity>51</intensity>
                <time>540</time>
            </point>
            <point>
                <intensity>37</intensity>
                <time>550</time>
            </point>
            <point>
                <intensity>56</intensity>
                <time>560</time>
            </point>
            <point>
                <intensity>47</intensity>
                <time>570</time>
            </point>
            <point>
                <intensity>51</intensity>
                <time>580</time>
            </point>
            <point>
                <intensity>47</intensity>
                <time>590</time>
            </point>
            <point>
                <intensity>65</intensity>
                <time>600</time>
            </point>
            <point>
                <intensity>23</intensity>
                <time>610</time>
            </point>
            <point>
                <intensity>9</intensity>
                <time>620</time>
            </point>
            <point>
                <intensity>42</intensity>
                <time>630</time>
            </point>
            <point>
                <intensity>33</intensity>
                <time>640</time>
            </point>
            <point>
                <intensity>37</intensity>
                <time>650</time>
            </point>
            <point>
                <intensity>47</intensity>
                <time>660</time>
            </point>
            <point>
                <intensity>51</intensity>
                <time>670</time>
            </point>
            <point>
                <intensity>14</intensity>
                <time>680</time>
            </point>
            <point>
                <intensity>70</intensity>
                <time>690</time>
            </point>
            <point>
                <intensity>33</intensity>
                <time>700</time>
            </point>
            <point>
                <intensity>23</intensity>
                <time>710</time>
            </point>
            <point>
                <intensity>19</intensity>
                <time>720</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>730</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>740</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>750</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>760</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>770</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>780</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>790</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>800</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>810</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>820</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>830</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>840</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>850</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>860</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>870</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>880</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>910</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>930</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>950</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>970</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1020</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1110</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1130</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1140</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1150</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1160</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1170</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1180</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1190</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1220</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1270</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1290</time>
            </point>
        </deep_red>
        <uv>
            <point>
                <intensity>0</intensity>
                <time>0</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>360</time>
            </point>
            <point>
                <intensity>22</intensity>
                <time>480</time>
            </point>
            <point>
                <intensity>55</intensity>
                <time>490</time>
            </point>
            <point>
                <intensity>77</intensity>
                <time>500</time>
            </point>
            <point>
                <intensity>98</intensity>
                <time>510</time>
            </point>
            <point>
                <intensity>119</intensity>
                <time>520</time>
            </point>
            <point>
                <intensity>161</intensity>
                <time>530</time>
            </point>
            <point>
                <intensity>192</intensity>
                <time>540</time>
            </point>
            <point>
                <intensity>211</intensity>
                <time>550</time>
            </point>
            <point>
                <intensity>230</intensity>
                <time>560</time>
            </point>
            <point>
                <intensity>249</intensity>
                <time>570</time>
            </point>
            <point>
                <intensity>279</intensity>
                <time>580</time>
            </point>
            <point>
                <intensity>297</intensity>
                <time>590</time>
            </point>
            <point>
                <intensity>315</intensity>
                <time>600</time>
            </point>
            <point>
                <intensity>332</intensity>
                <time>610</time>
            </point>
            <point>
                <intensity>349</intensity>
                <time>620</time>
            </point>
            <point>
                <intensity>377</intensity>
                <time>630</time>
            </point>
            <point>
                <intensity>404</intensity>
                <time>640</time>
            </point>
            <point>
                <intensity>420</intensity>
                <time>650</time>
            </point>
            <point>
                <intensity>435</intensity>
                <time>660</time>
            </point>
            <point>
                <intensity>391</intensity>
                <time>670</time>
            </point>
            <point>
                <intensity>442</intensity>
                <time>680</time>
            </point>
            <point>
                <intensity>433</intensity>
                <time>690</time>
            </point>
            <point>
                <intensity>433</intensity>
                <time>700</time>
            </point>
            <point>
                <intensity>479</intensity>
                <time>710</time>
            </point>
            <point>
                <intensity>451</intensity>
                <time>720</time>
            </point>
            <point>
                <intensity>386</intensity>
                <time>730</time>
            </point>
            <point>
                <intensity>414</intensity>
                <time>740</time>
            </point>
            <point>
                <intensity>386</intensity>
                <time>750</time>
            </point>
            <point>
                <intensity>363</intensity>
                <time>760</time>
            </point>
            <point>
                <intensity>414</intensity>
                <time>770</time>
            </point>
            <point>
                <intensity>367</intensity>
                <time>780</time>
            </point>
            <point>
                <intensity>419</intensity>
                <time>790</time>
            </point>
            <point>
                <intensity>358</intensity>
                <time>800</time>
            </point>
            <point>
                <intensity>330</intensity>
                <time>810</time>
            </point>
            <point>
                <intensity>312</intensity>
                <time>820</time>
            </point>
            <point>
                <intensity>381</intensity>
                <time>830</time>
            </point>
            <point>
                <intensity>386</intensity>
                <time>840</time>
            </point>
            <point>
                <intensity>326</intensity>
                <time>850</time>
            </point>
            <point>
                <intensity>400</intensity>
                <time>860</time>
            </point>
            <point>
                <intensity>284</intensity>
                <time>870</time>
            </point>
            <point>
                <intensity>326</intensity>
                <time>880</time>
            </point>
            <point>
                <intensity>372</intensity>
                <time>910</time>
            </point>
            <point>
                <intensity>293</intensity>
                <time>930</time>
            </point>
            <point>
                <intensity>288</intensity>
                <time>950</time>
            </point>
            <point>
                <intensity>242</intensity>
                <time>970</time>
            </point>
            <point>
                <intensity>237</intensity>
                <time>1020</time>
            </point>
            <point>
                <intensity>237</intensity>
                <time>1110</time>
            </point>
            <point>
                <intensity>195</intensity>
                <time>1130</time>
            </point>
            <point>
                <intensity>163</intensity>
                <time>1140</time>
            </point>
            <point>
                <intensity>158</intensity>
                <time>1150</time>
            </point>
            <point>
                <intensity>144</intensity>
                <time>1160</time>
            </point>
            <point>
                <intensity>130</intensity>
                <time>1170</time>
            </point>
            <point>
                <intensity>149</intensity>
                <time>1180</time>
            </point>
            <point>
                <intensity>70</intensity>
                <time>1190</time>
            </point>
            <point>
                <intensity>19</intensity>
                <time>1220</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1270</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1290</time>
            </point>
        </uv>
        <deep_blue>
            <point>
                <intensity>0</intensity>
                <time>0</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>480</time>
            </point>
            <point>
                <intensity>967</intensity>
                <time>770</time>
            </point>
            <point>
                <intensity>1000</intensity>
                <time>780</time>
            </point>
            <point>
                <intensity>1000</intensity>
                <time>1020</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1320</time>
            </point>
        </deep_blue>
        <violet>
            <point>
                <intensity>0</intensity>
                <time>0</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>360</time>
            </point>
            <point>
                <intensity>22</intensity>
                <time>480</time>
            </point>
            <point>
                <intensity>66</intensity>
                <time>490</time>
            </point>
            <point>
                <intensity>76</intensity>
                <time>500</time>
            </point>
            <point>
                <intensity>108</intensity>
                <time>510</time>
            </point>
            <point>
                <intensity>140</intensity>
                <time>520</time>
            </point>
            <point>
                <intensity>171</intensity>
                <time>530</time>
            </point>
            <point>
                <intensity>202</intensity>
                <time>540</time>
            </point>
            <point>
                <intensity>210</intensity>
                <time>550</time>
            </point>
            <point>
                <intensity>229</intensity>
                <time>560</time>
            </point>
            <point>
                <intensity>259</intensity>
                <time>570</time>
            </point>
            <point>
                <intensity>288</intensity>
                <time>580</time>
            </point>
            <point>
                <intensity>351</intensity>
                <time>590</time>
            </point>
            <point>
                <intensity>391</intensity>
                <time>600</time>
            </point>
            <point>
                <intensity>441</intensity>
                <time>610</time>
            </point>
            <point>
                <intensity>503</intensity>
                <time>620</time>
            </point>
            <point>
                <intensity>553</intensity>
                <time>630</time>
            </point>
            <point>
                <intensity>602</intensity>
                <time>640</time>
            </point>
            <point>
                <intensity>651</intensity>
                <time>650</time>
            </point>
            <point>
                <intensity>856</intensity>
                <time>660</time>
            </point>
            <point>
                <intensity>800</intensity>
                <time>670</time>
            </point>
            <point>
                <intensity>674</intensity>
                <time>680</time>
            </point>
            <point>
                <intensity>586</intensity>
                <time>690</time>
            </point>
            <point>
                <intensity>637</intensity>
                <time>700</time>
            </point>
            <point>
                <intensity>651</intensity>
                <time>710</time>
            </point>
            <point>
                <intensity>805</intensity>
                <time>720</time>
            </point>
            <point>
                <intensity>647</intensity>
                <time>730</time>
            </point>
            <point>
                <intensity>647</intensity>
                <time>740</time>
            </point>
            <point>
                <intensity>805</intensity>
                <time>750</time>
            </point>
            <point>
                <intensity>605</intensity>
                <time>760</time>
            </point>
            <point>
                <intensity>600</intensity>
                <time>770</time>
            </point>
            <point>
                <intensity>772</intensity>
                <time>780</time>
            </point>
            <point>
                <intensity>656</intensity>
                <time>790</time>
            </point>
            <point>
                <intensity>665</intensity>
                <time>800</time>
            </point>
            <point>
                <intensity>716</intensity>
                <time>810</time>
            </point>
            <point>
                <intensity>605</intensity>
                <time>820</time>
            </point>
            <point>
                <intensity>609</intensity>
                <time>830</time>
            </point>
            <point>
                <intensity>698</intensity>
                <time>840</time>
            </point>
            <point>
                <intensity>533</intensity>
                <time>850</time>
            </point>
            <point>
                <intensity>628</intensity>
                <time>860</time>
            </point>
            <point>
                <intensity>702</intensity>
                <time>870</time>
            </point>
            <point>
                <intensity>549</intensity>
                <time>880</time>
            </point>
            <point>
                <intensity>758</intensity>
                <time>910</time>
            </point>
            <point>
                <intensity>688</intensity>
                <time>930</time>
            </point>
            <point>
                <intensity>623</intensity>
                <time>950</time>
            </point>
            <point>
                <intensity>912</intensity>
                <time>970</time>
            </point>
            <point>
                <intensity>763</intensity>
                <time>1020</time>
            </point>
            <point>
                <intensity>684</intensity>
                <time>1110</time>
            </point>
            <point>
                <intensity>693</intensity>
                <time>1130</time>
            </point>
            <point>
                <intensity>572</intensity>
                <time>1140</time>
            </point>
            <point>
                <intensity>535</intensity>
                <time>1150</time>
            </point>
            <point>
                <intensity>372</intensity>
                <time>1160</time>
            </point>
            <point>
                <intensity>344</intensity>
                <time>1170</time>
            </point>
            <point>
                <intensity>219</intensity>
                <time>1180</time>
            </point>
            <point>
                <intensity>195</intensity>
                <time>1190</time>
            </point>
            <point>
                <intensity>107</intensity>
                <time>1220</time>
            </point>
            <point>
                <intensity>47</intensity>
                <time>1270</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1290</time>
            </point>
        </violet>
        <cool_white>
            <point>
                <intensity>0</intensity>
                <time>0</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>360</time>
            </point>
            <point>
                <intensity>19</intensity>
                <time>480</time>
            </point>
            <point>
                <intensity>42</intensity>
                <time>490</time>
            </point>
            <point>
                <intensity>74</intensity>
                <time>500</time>
            </point>
            <point>
                <intensity>149</intensity>
                <time>510</time>
            </point>
            <point>
                <intensity>144</intensity>
                <time>520</time>
            </point>
            <point>
                <intensity>121</intensity>
                <time>530</time>
            </point>
            <point>
                <intensity>116</intensity>
                <time>540</time>
            </point>
            <point>
                <intensity>130</intensity>
                <time>550</time>
            </point>
            <point>
                <intensity>135</intensity>
                <time>560</time>
            </point>
            <point>
                <intensity>93</intensity>
                <time>570</time>
            </point>
            <point>
                <intensity>79</intensity>
                <time>580</time>
            </point>
            <point>
                <intensity>112</intensity>
                <time>590</time>
            </point>
            <point>
                <intensity>102</intensity>
                <time>600</time>
            </point>
            <point>
                <intensity>70</intensity>
                <time>610</time>
            </point>
            <point>
                <intensity>56</intensity>
                <time>620</time>
            </point>
            <point>
                <intensity>56</intensity>
                <time>630</time>
            </point>
            <point>
                <intensity>37</intensity>
                <time>640</time>
            </point>
            <point>
                <intensity>41</intensity>
                <time>650</time>
            </point>
            <point>
                <intensity>40</intensity>
                <time>660</time>
            </point>
            <point>
                <intensity>39</intensity>
                <time>670</time>
            </point>
            <point>
                <intensity>38</intensity>
                <time>680</time>
            </point>
            <point>
                <intensity>37</intensity>
                <time>690</time>
            </point>
            <point>
                <intensity>36</intensity>
                <time>700</time>
            </point>
            <point>
                <intensity>35</intensity>
                <time>710</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>720</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>730</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>740</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>750</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>760</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>770</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>780</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>790</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>800</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>810</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>820</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>830</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>840</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>850</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>860</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>870</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>880</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>910</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>930</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>950</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>970</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1020</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1110</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1130</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1140</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1150</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1160</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1170</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1180</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1190</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1220</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1270</time>
            </point>
            <point>
                <intensity>0</intensity>
                <time>1290</time>
            </point>
        </cool_white>

    </colors>
</ramp>

I would like to parse this xml in to a datagridview table format like below

table

however, as you can see the code I'm currently using is not formatting it correctly -

int i = 0;
            foreach(XmlNode node in doc.SelectNodes(query))
            {
                row = results.NewRow();
                     XmlNode Element = (XmlNode)node;
                     foreach (XmlNode node1 in Element)
                     {
                        XmlNode Element1 = (XmlNode)node1;
                        results.Columns.Add(Element1.Name, typeof(string)); //(Colour)
                     }
                        foreach (XmlNode node2 in Element)
                        {
                            XmlNode Element2 = (XmlNode)node2;
                            foreach (XmlNode node3 in Element2) // Colour
                            {
                                XmlNode Element3 = (XmlNode)node3; // (Intesity)
                                foreach (XmlNode node4 in Element3)
                                {
                                    XmlNode Element4 = (XmlNode)node4;
                                    if (Element4.Name == "intensity")
                                    {
                                                row[i] = Element4.InnerText.ToString();
                                                results.Rows.Add(row);
                                                row = results.NewRow();
                                    }
                                }
                            }
                            i++;
                        }


            }

            //now return the DataTable
            return results;

I require "color" as the column Header, I require intensity as the value for each color at a specific time

hope someone can help me?

thanks Craig.

Here's a simple solution for you that parses the entire XML file and loads it into a Data Set, which is later on used to bind the Data Source of the Grid View.

DataSet ds = new DataSet();
ds.ReadXml("xml file path"));
GridView1.DataSource = ds;
GridView1.DataBind();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM