将xml数据转换为数据集

时间:2013-02-24 10:35:34

标签: c# xml dataset

我正在尝试将此xml信息放入表中。 我已经尝试将xml读入数据集......

         string myXMLfile = @"..\..\..\BR7.xml";

        //http://tatts.com/pagedata/racing/2011/10/5/BR7.xml
        //http://tatts.com/racing/2011/10/5/BR/7

        DataSet ds = new DataSet();
        try
        {
            ds.ReadXml(myXMLfile);


            for (int i = 0; i < ds.Tables.Count; i++)
            {
                listBox1.Items.Add(ds.Tables[i].TableName);
            }

            dgvRunner.DataSource = ds;
            dgvRunner.DataMember = "Runner";

            dgvWinOdds.DataSource = ds;
            dgvWinOdds.DataMember = "WinOdds";

            dgvPlaceOdds.DataSource = ds;
            dgvPlaceOdds.DataMember = "PlaceOdds";

            dgvFixedOdds.DataSource = ds;
            dgvFixedOdds.DataMember = "FixedOdds";

但是我有四个单独的表格。 Runner,WinOdds,PlaceOdds和fixedOdds 如何将Runner的所有信息都收集到一个表中?

以下是一些xml ...

-<Runner RunnerNo="1" Rtng="93" LastResult="0X1" Form="W" Weight="57.0" Handicap="0" Barrier="10" RiderChanged="N" Rider="P SCHMIDT(A)" Scratched="N" RunnerName="PREACHER BOY">
<WinOdds CalcTime="2011-10-05T16:51:07" LastCalcTime="2011-10-05T16:46:32" Short="N" Lastodds="11.50" Odds="10.70"/>
<PlaceOdds Short="N" Lastodds="3.50" Odds="3.30"/>
-<FixedOdds RaceDayDate="2011-10-05T00:00:00" MeetingCode="BR" RaceNo="07" RunnerNo="01" LateScratching="0" Status="w" OfferName="PREACHER BOY" RetailPlaceOdds="3.3500" RetailWinOdds="12.0000" PlaceOdds="3.3500" WinOdds="12.0000" OfferId="981020"><Book SubEventId="863449" BookStatus="F"/> 
</FixedOdds>
</Runner>

2 个答案:

答案 0 :(得分:0)

您应该在每个表中都有关于RunnerNo的信息(WinOdd和PlaceOdds中缺少这些信息),以便您可以关联四个数据表。您可以将RunnerNo定义为唯一

之后,您只使用一个gridview并将四个数据表之间的关系作为gridview的DataMember。

这里是关系应该是什么样的sample

答案 1 :(得分:0)

我建议一种将Runner children属性的所有属性移动到Runner节点属性集合的方法。这需要以下假设:

  1. Runner节点中的每个嵌套元素都包含最多1个嵌套元素(即Book元素中只有一个FixedOdds元素)
  2. 将通过在其前面添加其原始节点的名称来重命名属性(CalcTime元素中的WinOdds属性将复制到Runner属性的集合中,名称为{ {1}})
  3. 您可以保留或删除子节点(我选择在代码示例中删除它们)
  4. 以下是代码:

    WinOddsCalcTime