1

私のphpサイトからAPIとしてxmlファイルを取得しています。

これは、私の php アプリケーションから返される xml です。

<xml>
<overzicht>
<item>
<sessieID>6</sessieID>
<onderwerp>Vrijwilligers, een uitstervend rasnn</onderwerp>
<omschrijving>Ode aan de vrijwilligers jjj</omschrijving>
<sprekerID>1</sprekerID>
<lokaalID>20</lokaalID>
<themaID>1</themaID>
<typeID>2</typeID>
<periodeID>2</periodeID>
<datum>2012-02-20</datum>
<maximaleInschrijvingen>1</maximaleInschrijvingen>
<spreker>
    <sprekerID>1</sprekerID>
    <sprekerNaam>Rik Torfs</sprekerNaam>
    <loginID>13</loginID>
</spreker>
<lokaal>
    <lokaalID>20</lokaalID>
    <campusNaam>Malle</campusNaam>
    <lokaalOpCampus>W10</lokaalOpCampus>
    <typeID>2</typeID>
</lokaal>
</item>
<item>
<sessieID>15</sessieID>
<onderwerp>VPKB</onderwerp>
<omschrijving/>
<sprekerID>6</sprekerID>
<lokaalID>2</lokaalID>
<themaID>1</themaID>
<typeID>1</typeID>
<periodeID>2</periodeID>
<datum>2012-02-20</datum>
<maximaleInschrijvingen>50</maximaleInschrijvingen>
<spreker>
    <sprekerID>6</sprekerID>
    <sprekerNaam>Dick Wursten</sprekerNaam>
    <loginID>18</loginID>
</spreker>
<lokaal>
    <lokaalID>2</lokaalID>
    <campusNaam>KHK Vorselaar</campusNaam>
    <lokaalOpCampus>A102</lokaalOpCampus>
    <typeID>1</typeID>
</lokaal>
</item>
...
</overzicht>
</xml>

これは私のC#コードです。Sessieの全リストを取得したい。

XDocument xmlDoc = XDocument.Parse(e.Result);
List<Sessie> sessies = 
    (
        from item in xmlDoc.Descendants("overzicht")
        select new Sessie(
                item.Element("onderwerp").Value,
                Convert.ToInt32(item.Element("sessieID").Value),
                item.Element("omschrijving").Value,
                (Spreker)(
                            new Spreker(
                                Convert.ToInt32(item.Element("spreker").Element("sprekerID").Value), 
                                item.Element("spreker").Element("sprekernaam").Value)
                        ),
                Convert.ToDateTime(item.Element("datum").Value),
                Convert.ToInt32(item.Element("maximaleInschrijvingen").Value),
                (Lokaal)(
                            new Lokaal(
                                Convert.ToInt32(item.Element("lokaal").Element("lokaalID").Value), 
                                item.Element("lokaal").Element("campusNaam").Value, 
                                item.Element("lokaal").Element("lokaalOpCampus").Value)
                        )
                )
    ).ToList<Sessie>();

私のコードがこの例外で機能していないことはわかっています。

"NullReferenceException"

4

2 に答える 2

3

まず、明らかな問題が 1 つあります。クエリの最初を見てください。

from item in xmlDoc.Descendants("overzicht")
select new Sessie(item.Element("onderwerp").Value,
...

<onderwerp>直下にがある場合にのみ機能し<overzicht>ます。ありません-<item>要素の下にあります。おそらく(範囲変数名を考えると)あなたが意味したのは:

from item in xmlDoc.Descendants("item")
select new Sessie(item.Element("onderwerp").Value,
...
于 2012-04-27T08:49:40.177 に答える
2

クエリ

 from item in xmlDoc.Descendants("overzicht")

<overzicht>要素のリストを返します。item.Element("onderwerp")存在しない場合、<item>間に要素がありません。

簡単な修正:

 from item in xmlDoc.Descendants("item")
于 2012-04-27T08:51:51.527 に答える