我能當我知道的命名空間,並請求名稱解析XML SOAP解析SOAP。如何才能列出所有請求和對象名稱
因爲我有不同的SOAP請求,我想在SOAP文件,以獲取請求名稱。
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://schema.example.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
>
<SOAP-ENV:Body>
**<ns1:SendMailling>**
<campagne xsi:type="ns1:Campaign"><ActivateDedup xsi:nil="true"/><BillingCode xsi:nil="true"/><DeliveryFax xsi:type="ns1:DeliveryFax"/>
<DeliveryMail xsi:type="ns1:DeliveryMail">
...
PHP代碼:我SOAP的一部分摘錄
if(is_file($file))
{
$content=file_get_contents($file);
$xml = simplexml_load_string($content);
$xml->registerXPathNamespace('ns1', 'http://schema.example.com');
foreach ($xml->xpath('\\SOAP-ENV:') as $item)
{
//certainly the bad way?
echo "<pre>";
print_r($item);
echo "</pre>";
}
echo "<pre>";
print_r($xml);
echo "</pre>";
}
我沒有得到任何結果。我想使出現: 'SendMailling'(識別請求名)
當我明確指定
//foreach($xml->xpath('//ns1:SendMailling') as $item)
沒有問題。
我試圖foreach($xml->xpath('//ns1') as $item)
和$xml->xpath('//SOAP-ENC'), $xml->xpath('//Body')
但...
所以你actualy的問題是,你想知道你怎麼能在XML文檔中得到使用的命名空間的列表? - http://php.net/manual/simplexmlelement.getnamespaces。php – hakre