【发布时间】:2021-08-23 03:40:09
【问题描述】:
我尝试使用函数 simplexml_load_string() 解析从服务器接收的 xml,但我收到解析错误。是另一种解析这个xml的方法吗?
print_r($result1->GetChannelMeasurementResul->any)给:
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Measurements" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Measurements"><xs:complexType><xs:sequence><xs:element name="Station" type="xs:long" minOccurs="0"/><xs:element name="ChannelID" type="xs:int" minOccurs="0"/><xs:element name="DateTime" type="xs:dateTime" minOccurs="0"/><xs:element name="Value" type="xs:double" minOccurs="0"/><xs:element name="Status" type="xs:int" minOccurs="0"/></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"><DocumentElement xmlns=""><Measurements diffgr:id="Measurements1" msdata:rowOrder="0"><Station>12</Station><ChannelID>6</ChannelID><DateTime>2021-06-04T18:10:00+02:00</DateTime><Value>13.77392</Value><Status>0</Status></Measurements><Measurements diffgr:id="Measurements2" msdata:rowOrder="1"><Station>12</Station><ChannelID>6</ChannelID><DateTime>2021-06-04T18:11:00+02:00</DateTime><Value>13.77652</Value><Status>0</Status></Measurements><Measurements diffgr:id="Measurements3" msdata:rowOrder="2"><Station>12</Station><ChannelID>6</ChannelID><DateTime>2021-06-04T18:12:00+02:00</DateTime><Value>13.77884</Value><Status>0</Status></Measurements></DocumentElement></diffgr:diffgram>
我试试
$result1 = $client->__soapCall('GetChannelMeasurement', array( $measerement)); $results2=simplexml_load_string($result1->GetChannelMeasurementResult->any);
【问题讨论】:
-
您能与我们分享您尝试过的代码吗?
-
您发布的代码看起来像是来自服务器的原始响应。 simplexml_load_string() 用于处理干净的 XML 文件。
-
我尝试使用 ``` $result1 = $client->__soapCall('GetChannelMeasurement', array( $measerement)); $results2=simplexml_load_string($result1->GetChannelMeasurementResult->any);```
-
这可能是来自
GetChannelMeasurementResult->any的返回值不是你想要的。print_r($result1->GetChannelMeasurementResult);给了什么? -
第一篇文章中的xml
标签: php xml soap xml-parsing