除了使用数据集进行 xml 读取之外,还有其他方法吗?

本文关键字:其他 方法 读取 数据集 xml | 更新日期: 2023-09-27 18:33:50

我基本上只想将xml读入赛马类。我有这段代码,但(列表)行[1]总是返回 0

public List<HorseRacing> ReturnListOfHorseRacings()
    {
        string xmlData = HttpContext.Current.Server.MapPath("~/XML/top.xml");
        DataSet ds = new DataSet();
        ds.ReadXml(xmlData);
        var horseRacing = new List<HorseRacing>();
        horseRacing = (from rows in ds.Tables[0].AsEnumerable()
                       select new HorseRacing
                       {
                           name= rows[0].ToString(),
                           meetings= (List<Meeting>)rows[1],
                       }).ToList();
        return horseRacing;
    }

请帮忙。似乎数据集单元格无法接受列表。

顺便说一下,会议也是另一个多元素节点。

编辑:

该 xml 如下所示:

<horseracing>
  <name>UK / IRE</name>
  <meetings>
    <meeting>
      <name>Doncaster</name>
       <marketgroups>
        <marketgroup>
          <name>5f Cond Stakes</name>
           <idfwmarketgroup>468262.1</idfwmarketgroup>
           <tsstart>2013-03-22T13:25:00</tsstart>
        </marketgroup>
        <marketgroup>
          <name>1m 2 1/2f Handicap</name>
          <idfwmarketgroup>468263.1</idfwmarketgroup>
          <tsstart>2013-03-22T14:00:00</tsstart>
        </marketgroup>
       </marketgroups>
     </meeting>
    <meeting>
      <name>Newbury</name>
       <marketgroups>
        <marketgroup>
          <name>2m 5f 0y Emma Lavelle Racing Maiden Hurdle</name>
           <idfwmarketgroup>468270.1</idfwmarketgroup>
           <tsstart>2013-03-22T14:10:00</tsstart>
         </marketgroup>
        <marketgroup>
           <name>2m 6f 110y Mark Polding Half Century Handicap Chase</name>
          <idfwmarketgroup>468271.1</idfwmarketgroup>
          <tsstart>2013-03-22T14:40:00</tsstart>
        </marketgroup>
      </marketgroups>
    </meeting>
  </meetings>
 </horseracing>

不好意思。编辑第二部分:我想将 xml 读入赛马课。

除了使用数据集进行 xml 读取之外,还有其他方法吗?

您可以使用

XDocument读取XML文件。XDocument 需要一个 XML 源,而 XML 源又需要一个字符串源。在代码中,它看起来像这样:

XDocument coordinates = XDocument.Load (XmlReader.Create (new StringReader (File.ReadAllText (pathOfFile))));

然后,您可以使用 foreach 循环遍历 XDocument:

foreach (var coordinate in coordinates.Descendants("document")) 
{
    string data = coordinate.Element ("object").Value;
}

"后代"用于仅搜索给定标签的子项。"元素"用于从给定标签中获取所有数据。如果您的 XML 如下所示:

<document>
    <object>
        <id>17</id>
        <userID>128321</userID>
        <approved>1</approved>
        <reason>Test "Declined"</reason>
    </object>
    <object>
        <id>18</id>
        <userID>128321</userID>
        <approved>2</approved>
        <reason>Test "Confirmed"</reason>
    </object>
<document>

使用上述方法,您将能够启动具有 id、userID、批准和原因值的列表或数组。

我希望这有帮助!祝你好运!

亲爱的问候,比约恩