【发布时间】:2016-01-13 05:12:33
【问题描述】:
我有这种结构的 XML。我正在尝试将它解析为一个数组,但我遇到了问题。
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CheckDealNoStatusResponse xmlns="http://tempuri.org/">
<CheckDealNoStatusResult>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="tbl" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="tbl">
<xs:complexType>
<xs:sequence>
<xs:element name="Temp1" type="xs:long" minOccurs="0" />
<xs:element name="Temp2" type="xs:string" minOccurs="0" />
<xs:element name="Temp3" type="xs:string" 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">
<NewDataSet xmlns="">
<tbl diffgr:id="tbl1" msdata:rowOrder="0">
<Temp1>12929011</Temp1>
<Temp2>Pending</Temp2>
<Temp3>Pending</Temp3>
</tbl>
</NewDataSet>
</diffgr:diffgram>
</CheckDealNoStatusResult>
<ErrorMsg />
</CheckDealNoStatusResponse>
</soap:Envelope>
我试图用这种方式解析它
$parser = simplexml_load_string($smlString, "SimpleXMLElement", LIBXML_NOCDATA);
echo "<br /><br /><br /><pre>";
print_r( $parser );
echo "</pre>";
但我只得到这个。
SimpleXMLElement Object
(
[CheckDealNoStatusResponse] => SimpleXMLElement Object
(
[CheckDealNoStatusResult] => SimpleXMLElement Object
(
)
[ErrorMsg] => SimpleXMLElement Object
(
)
)
)
如何获得这些信息
<Temp1>12929011</Temp1>
<Temp2>Pending</Temp2>
<Temp3>Pending</Temp3>
【问题讨论】:
-
看起来它被解析了。你在问什么?
-
@pvg,我希望得到这个消息
292901 Pending Pending -
这不仅仅是 XML,它是 SOAP。 PHP 对此有一个特定的扩展。