Parsing XML with XElement occuring "object reference not set to an instance of the object"

REVISED: I restated the question in a simpler thread, and it was answered perfectly. The other thread is: How to exclude NULL blocks from XML using LINQ-to-XML?


First, TIA to the stackoverflow community. I have been living here as I work my through this project.

I am struggling with parsing xml (I am a newbie). I have read a lot of examples, and am working from the tutorial here: http://www.switchonthecode.com/tutorials/introduction-to-linq-simple-xml-parsing

XML document is below.

Any suggestions?

ourdoc = XDocument.Parse(xml);

var arrivalAndDepartures = 
   from arrivalAndDeparture in  ourdoc.Descendants("arrivalAndDeparture")
      select new   // error thrown 2nd time through this block
           {
              routeId = arrivalAndDeparture.Element("routeID").Value,
              scheduledDepartureTime = arrivalAndDeparture.Element("scheduledDepartureTime").Value,
            };

            foreach ( var arrivalAndDeparture in arrivalAndDepartures )
            {  
            Console.WriteLine("routeId: " + arrivalAndDeparture.routeId);
            Console.WriteLine("scheduledDepartureTime: " + arrivalAndDeparture.scheduledDepartureTime);
            };

This is the error in VS

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <version>2</version>
    <code>200</code>
    <text>OK</text>
    <data class="entryWithReferences">
        <references>
            <agencies>
                <agency>
                    <id>1</id>
                    <privateService>false</privateService>
                </agency>
                <agency>
                    <id>29</id>
                    <privateService>false</privateService>
                </agency>
                <agency>
                    <id>40</id>
                    <name>Sound Services</name>
                    <privateService>false</privateService>
                </agency>
            </agencies>
        <entry class="stopWithArrivalsAndDepartures">
            <stopId>1_450</stopId>
            <arrivalsAndDepartures>
                <arrivalAndDeparture>
                    <routeId>1_7</routeId>
                    <scheduledDepartureTime>1321232424000</scheduledDepartureTime>
                    <predictedDepartureTime>1321232591000</predictedDepartureTime>
                </arrivalAndDeparture>
                <arrivalAndDeparture>
                    <routeId>1_36</routeId>
                    <scheduledDepartureTime>1321232424000</scheduledDepartureTime>
                    <predictedDepartureTime>1321232608000</predictedDepartureTime>
                    <tripStatus>
                        <activeTripId>1_18921463</activeTripId>
                    </tripStatus>
                </arrivalAndDeparture>
                <arrivalAndDeparture>
                    <routeId>1_14</routeId>
                    <scheduledDepartureTime>1321232424000</scheduledDepartureTime>
                    <predictedDepartureTime>1321232690000</predictedDepartureTime>
                    <tripStatus>
                        <activeTripId>1_18156836</activeTripId>
                        <blockTripSequence>24</blockTripSequence>
                        <serviceDate>1321171200000</serviceDate>
                    </tripStatus>
                </arrivalAndDeparture>
                <arrivalAndDeparture>
                    <routeId>1_39</routeId>
                    <predictedDepartureTime>1321232939000</predictedDepartureTime>
                    <tripStatus>
                        <activeTripId>1_18009961</activeTripId>
                        <blockTripSequence>15</blockTripSequence>
                    </tripStatus>
                </arrivalAndDeparture>
                <arrivalAndDeparture>
                    <routeId>1_23</routeId>
                <arrivalAndDeparture>
                    <routeId>1_27</routeId>
                    <scheduledDepartureTime>1321233015000</scheduledDepartureTime>
                    <tripStatus>
                        <activeTripId>1_18086972</activeTripId>
                        <blockTripSequence>12</blockTripSequence>
                    </tripStatus>
                </arrivalAndDeparture>
                <arrivalAndDeparture>
                    <routeId>1_16</routeId>
                    <tripStatus>
                        <activeTripId>1_18009566</activeTripId>
                        <blockTripSequence>0</blockTripSequence>
                    </tripStatus>
                </arrivalAndDeparture>
                <arrivalAndDeparture>
                    <routeId>1_7</routeId>
                    <scheduledDepartureTime>1321233324000</scheduledDepartureTime>
                    <predictedDepartureTime>1321233337000</predictedDepartureTime>
                    <tripStatus>
                        <activeTripId>1_18921967</activeTripId>
                        <blockTripSequence>15</blockTripSequence>
                    </tripStatus>
                </arrivalAndDeparture>
            </arrivalsAndDepartures>
        </entry>
    </data>
</response>

Upvotes: 0

Views: 1131

Answers (3)

Abdul Munim
Abdul Munim

Reputation: 19217

Please make sure you have elements routeID node and scheduledDepartureTime node available under ALL arrivalAndDeparture nodes in your XML.

Upvotes: 1

shenhengbin
shenhengbin

Reputation: 4294

if the xml is like

<?xml version="1.0" encoding="utf-8" ?>
<arrivalAndDeparture>
</arrivalAndDeparture>

you could get the same exception as your post.

Upvotes: 2

Haris Hasan
Haris Hasan

Reputation: 30097

Seems like either

arrivalAndDeparture.Element("routeID")

or

arrivalAndDeparture.Element("scheduledDepartureTime") is null

Upvotes: 1

Related Questions