Reputation: 6934
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);
};
<?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
Reputation: 19217
Please make sure you have elements routeID
node and scheduledDepartureTime
node available under ALL arrivalAndDeparture
nodes in your XML.
Upvotes: 1
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
Reputation: 30097
Seems like either
arrivalAndDeparture.Element("routeID")
or
arrivalAndDeparture.Element("scheduledDepartureTime")
is null
Upvotes: 1