0

これは私のxmlファイルです:

<categories>
   <category name="England: Fa Cup" id="1198" file_group="england">
     <matches date="Apr 17" formatted_date="17.04.2011">
       <match status="FT" date="Apr 17" formatted_date="17.04.2011" time="15:00" fix_id="440780" id="588118">
           <localteam name="Bolton" goals="0" id="9048" />
           <visitorteam name="Stoke" goals="5" id="9378" />
           <events>
              <event type="goal" minute="11" team="visitorteam" player="Etherington" result="[0 - 1]" playerId="2720" eventid="5881181" />
              <event type="goal" minute="17" team="visitorteam" player="Huth" result="[0 - 2]" playerId="11" eventid="5881182" />
              <event type="goal" minute="30" team="visitorteam" player="Jones" result="[0 - 3]" playerId="647" eventid="5881183" />
              <event type="goal" minute="68" team="visitorteam" player="Walters" result="[0 - 4]" playerId="15748" eventid="5881184" />
              <event type="goal" minute="81" team="visitorteam" player="Walters" result="[0 - 5]" playerId="15748" eventid="5881185" />
           </events>
           <ht score="[0-3]" />
       </match>
       <match status="FT" date="Apr 16" formatted_date="16.04.2011" time="16:15" fix_id="437322" id="588119">
          <localteam name="Manchester City" goals="1" id="9259" />
          <visitorteam name="Manchester Utd" goals="0" id="9260" />
          <events>
            <event type="goal" minute="52" team="localteam" player="Toure Y." result="[1 - 0]" playerId="4496" eventid="5881191" />
            <event type="redcard" minute="72" team="visitorteam" player="Scholes" result="" playerId="2915" eventid="5881192" />
          </events>
        <ht score="[0-0]" />
      </match>
      <match status="FT" date="Mar 13" formatted_date="13.03.2011" time="16:45" fix_id="364779" id="577376">
          <localteam name="Manchester City" goals="1" id="9259" />
          <visitorteam name="Reading" goals="0" id="9324" />
          <events>
             <event type="goal" minute="74" team="localteam" player="Richards" result="[1 - 0]" playerId="2852" eventid="5773761" />
          </events>
          <ht score="[0-0]" />
      </match>
    </matches>
  </category>
  <category name="England: Fa Trophy" id="1196" file_group="england">
    <matches date="May 07" formatted_date="07.05.2011">
      <match status="AET" date="May 07" formatted_date="07.05.2011" time="14:00" fix_id="441112" id="593257">
        <localteam name="Darlington" goals="1" id="9130" />
        <visitorteam name="Mansfield" goals="0" id="9262" />
        <events>
           <event type="goal" minute="120" team="localteam" player="Senior" result="[1 - 0]" playerId="35858" eventid="5932571" />
        </events>
        <ht score="[0-0]" />
     </match>
     <match status="FT" date="Mar 19" formatted_date="19.03.2011" time="15:00" fix_id="403865" id="584799">
       <localteam name="Gateshead" goals="0" id="9178" />
       <visitorteam name="Darlington" goals="0" id="9130" />
      <events></events>
      <ht score="[0-0]" />
    </match>
    <match status="AET" date="Mar 19" formatted_date="19.03.2011" time="15:00" fix_id="435610" id="583846">
       <localteam name="Luton" goals="1" id="9253" />
       <visitorteam name="Mansfield" goals="1" id="9262" />
       <events>
         <event type="goal" minute="46" team="localteam" player="Owusu" result="[1 - 0]" playerId="51213" eventid="5838461" />
         <event type="redcard" minute="84" team="localteam" player="Gnakpa" result="" playerId="53534" eventid="5838462" />
         <event type="redcard" minute="89" team="localteam" player="Lawless" result="" playerId="36238" eventid="5838463" />
          <event type="goal" minute="118" team="visitorteam" player="Briscoe" result="[1 - 1]" playerId="76789" eventid="5838464" />
        </events>
        <ht score="[0-0]" />
    </match>
  </matches>
 </category>
</categories>

私のモデル

public class Category
 {
    public string Name { get; set; }      
    public int Id { get; set; }
    public string Filegroup { get; set; }
    public Matches Games{ get; set; }
 }

public class Matches
{
    public string Date { get; set; }
    public string Formatteddate { get; set; }
    public Observablecollection<Match> listGames{ get; set; }
}

public class Match
{
    public string Status { get; set; }
    public string Date { get; set; }
    public string Formatteddate { get; set; }
    public string Time { get; set; }
    public int Staticid { get; set; }
    public int Fixid { get; set; }
    public int Id { get; set; }
    public Localteam Homelteam { get; set; }
    public Visitorteam Awayteam { get; set; }
    public Events Ev { get; set; }
    public Ht HalfTime { get; set; }
}

public class Localteam
{
    public string Name { get; set; }
    public int Goals { get; set; }
    public int Id { get; set; }
}

public class Visitorteam
{
    public string Name { get; set; }
    public int Goals { get; set; }
    public int Id { get; set; }
}

public class Event
{
    public string Type { get; set; }
    public int Minute { get; set; }
    public string Team { get; set; }
    public string Player { get; set; }
    public string Result { get; set; }
    public string Playerid { get; set; }
    public int Eventid { get; set; }
}

public class Events
{
    public Observablecollection<Event> Ev { get; set; }
}

public class Ht
{
    public string Score { get; set; }
}

C# を使用してこの独特の xml ファイルを逆シリアル化する最良の方法は何ですか?

xsd.exeを試していました。xml スキーマを作成しましたが、そのスキーマを編集して単純な配列 (デフォルトで使用される) の代わりに observablecollection を使用する方法がわかりません。

私が検討している他のオプションは、そのxmlをjsonに変換することです。

Json.NET を使用してそのファイルを逆シリアル化しようとしましたが、エラーが発生しています。

 Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type   'System.Collections.Generic.List`1[Testapp.Model.Match]' because the type requires a   JSON array (e.g. [1,2,3]) to deserialize correctly.

その投稿には良い解決策が付属しているようです Cannot deserialize JSON array into type - Json.NET

上記の投稿のように JsonConverter がうまくいくと思います。しかし、そのような深くネストされた xml ファイルがどのように見えるかを理解するのは困難です。

助けていただければ幸いです。

4

0 に答える 0