Я использовал PHP SimpleXML, simplexml_load_string и не получил ответа даже после использования DOM и SimpleXML.
//Ответ PHP XML
$xml = <<<XML
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<StatusResponse xmlns="http://tempuri.org/">
<Result xmlns:a="http://schemas.datacontract.org/2004/07/OS.FLC" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:ResCode>OK</a:ResCode>
<a:IDNumber>149897</a:IDNumber>
<a:CusName>AXIOS ASOS</a:CusName>
<a:HoldName>AXA AXIOS</a:HoldName>
</Result>
</StatusResponse>
</s:Body>
</s:Envelope>
XML;
// используя PHP SIMPLE XML
$domContent = new SimpleXMLElement(((string)$xml), LIBXML_COMPACT);
$test = $domContent->xpath('/Result/a/*');
foreach ($test as $node)
{
print_r($node);
}
//Использование DOM
$domp = new DOMDocument('1.0', 'utf-8');
$domp->loadXML($xml);
$items = $domp->getElementsByTagName('a');
foreach ($items as $item)
{
$HOLDER = $item->getElementsByTagNameNS("http://schemas.datacontract.org/2004/07/OS.FLC", "*")->Result(0)->nodeValue;
echo "HoldName = " . $HOLDER . PHP_EOL;
}
// Expected Result
ResCode = OK
IDNumber = 149897
CusName = AXIOS ASOS
var_dump($domContent->children('s', true)->Body->children()->StatusResponse->Result->children('a', true))
. Мы можем согласиться, что это некрасиво. Но если вы хотите использовать XPath с simplexml, вам нужно зарегистрировать каждое пространство имен. вы используете - person Zeitounator   schedule 12.05.2019