用php获取xml元素数据

时间:2014-12-04 11:53:32

标签: php xml

我使用curl获取xml对象。 但我似乎无法输入xml元素数据。 我尝试使用:

$sxe = new SimpleXMLElement($result);
$final_xml = $sxe->asXML();
echo  $final_xml ->  Answer -> Status ;

用那个例子我什么都没得到。 OR

$xml = simplexml_load_string($sxe);
$json = json_encode($xml);
$array = json_decode($json);

在这个例子中,我得到了一个xml数组作为一个长字符串,并且数组中的每个位置都是xml字符串中的不同音符。

这是我得到的xml输出,我想从以下位置检索数据: 如何从此xml中检索数据或将其更改为JSON然后检索数据?

感谢名单

<?xml version="1.0" encoding="UTF-8"?>
  <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
    <ns7:GetStopMonitoringServiceResponse xmlns:ns3="http://www.siri.org.uk/siri" xmlns:ns4="http://www.ifopt.org.uk/acsb" xmlns:ns5="http://www.ifopt.org.uk/ifopt" xmlns:ns6="http://datex2.eu/schema/1_0/1_0" xmlns:ns7="http://new.webservice.namespace">
   <Answer>
      <ns3:ResponseTimestamp>2014-12-04T11:11:55.585+02:00</ns3:ResponseTimestamp>
      <ns3:ProducerRef>ISR Siri Server (141.10)</ns3:ProducerRef>
      <ns3:ResponseMessageIdentifier>89061165</ns3:ResponseMessageIdentifier>
      <ns3:RequestMessageRef>000234:1351677777:4684</ns3:RequestMessageRef>
      <ns3:Status>true</ns3:Status>
      <ns3:StopMonitoringDelivery version="IL2.7">
          <ns3:ResponseTimestamp>2014-12-04T11:11:55.585+02:00</ns3:ResponseTimestamp>
          <ns3:RequestMessageRef>0</ns3:RequestMessageRef>
          <ns3:Status>true</ns3:Status>
          <ns3:MonitoredStopVisit>
               <ns3:RecordedAtTime>2014-12-04T11:11:00.000+02:00</ns3:RecordedAtTime>
               <ns3:ItemIdentifier>1448001046</ns3:ItemIdentifier>
               <ns3:MonitoringRef>40262</ns3:MonitoringRef>
               <ns3:MonitoredVehicleJourney>
                    <ns3:LineRef>4687</ns3:LineRef>
                    <ns3:DirectionRef>3</ns3:DirectionRef>
                    <ns3:PublishedLineName>12</ns3:PublishedLineName>
                    <ns3:OperatorRef>3</ns3:OperatorRef>
                    <ns3:DestinationRef>40110</ns3:DestinationRef>
                    <ns3:OriginAimedDepartureTime>2014-12-04T10:45:00.000+02:00</ns3:OriginAimedDepartureTime>
                    <ns3:VehicleLocation>
                         <ns3:Longitude>34.94065475463867</ns3:Longitude>
                         <ns3:Latitude>32.428466796875</ns3:Latitude>
                    </ns3:VehicleLocation>
                    <ns3:MonitoredCall>
                         <ns3:StopPointRef>40262</ns3:StopPointRef>
                         <ns3:ExpectedArrivalTime>2014-12-04T11:12:00.000+02:00</ns3:ExpectedArrivalTime>
                    </ns3:MonitoredCall>
               </ns3:MonitoredVehicleJourney>
          </ns3:MonitoredStopVisit>
      </ns3:StopMonitoringDelivery>
    </Answer>
</ns7:GetStopMonitoringServiceResponse>
</S:Body>
</S:Envelope>

1 个答案:

答案 0 :(得分:1)

试试这个测试代码:

<pre><?php

$entries = simplexml_load_file("test.xml");
$namespaces = $entries->getNamespaces(true);

var_dump($namespaces);

$ns3s = $entries->children($namespaces['S'])
            ->Body
            ->children($namespaces['ns7'])
            ->GetStopMonitoringServiceResponse
            ->children()
            ->Answer
            ->children($namespaces['ns3']);

var_dump($ns3s);