开发者

c# Parsing XML issue

I am using this code to try and read this XML below, but it is not read anything in the foreach loop and skipping that. Thanks.

C#

 XElement _xml;
 _xml = XElement.Parse(PostResult);
 foreach (XElement value in _xml.Elements("ServiceDelivery")
                                .Element("StopMonitoringDelivery")
                                .Elements("MonitoredStopVisit"))
          {
             StopFeed _item = new StopFeed();
             _item.A= value.Element("PublishedLineName").Value;
             _item.B = value.Element("DirectionName").Value;

              listBox1.Items.Add(_item);
           }

XML:

<?xml version="1.0" encoding="UTF-8" st开发者_如何转开发andalone="yes"?>    
<Siri version="1.0" xmlns="http://www.siri.org.uk/">
<ServiceDelivery>
    <ResponseTimestamp>2011-10-04T11:45:36.415+01:00</ResponseTimestamp>
    <ResponseMessageIdentifier>1d8bc237-2df6-43e6-af56-c750d3089eb6</ResponseMessageIdentifier>
    <StopMonitoringDelivery version="1.0">
        <ResponseTimestamp>2011-10-04T11:45:36.415+01:00</ResponseTimestamp>
        <RequestMessageRef>1</RequestMessageRef>
        <MonitoredStopVisit>
            <RecordedAtTime>2011-10-04T11:45:36.412+01:00</RecordedAtTime>
            <MonitoringRef>020035057</MonitoringRef>
            <MonitoredVehicleJourney>
                <FramedVehicleJourneyRef>
                    <DataFrameRef>-</DataFrameRef>
                    <DatedVehicleJourneyRef>-</DatedVehicleJourneyRef>
                </FramedVehicleJourneyRef>
                <VehicleMode>bus</VehicleMode>
                <PublishedLineName>28</PublishedLineName>
                <DirectionName>blahblah</DirectionName>
                <OperatorRef>153</OperatorRef>
                <MonitoredCall>
                    <AimedDepartureTime>2011-10- 04T11:48:00.000+01:00</AimedDepartureTime>
                </MonitoredCall>
            </MonitoredVehicleJourney>
        </MonitoredStopVisit>
    </StopMonitoringDelivery>
</ServiceDelivery>
</Siri>


I think you forgot the namespace. Have a look at XNamespace

XNamespace xn= "http://www.siri.org.uk/";

foreach (XElement value in _xml.Elements(xn+ "ServiceDelivery")
                            .Element(xn+ "StopMonitoringDelivery")
                            .Elements(xn+ "MonitoredStopVisit"))
{
      ....
}


The root element is Siri.

Either use:

XElement value in _xml.Root.Elements("ServiceDelivery")
                            .Element("StopMonitoringDelivery")
                            .Elements("MonitoredStopVisit"))

or

XElement value in _xml.Element("Siri")
                            .Elements("ServiceDelivery")
                            .Element("StopMonitoringDelivery")
                            .Elements("MonitoredStopVisit"))

/B


try _xml.Elements("//ServiceDelivery") or _xml.Elements("Siri/ServiceDelivery"), you forgot that your ServiceDelivery node is child of Siri node.

Or maybe the XML namespace is the problem, check this page and see how XmlNamespaceManager can be used.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜