XML Soap тело вне конверта

#php #xml #dom

#php #xml #dom

Вопрос:

Я смотрел на это часами, и мне действительно нужен другой набор глаз. Мой конверт закрыт, и тело отображается под ним не как дочернее, а как корневое. Вот соответствующий код.

 $XMLDoc = new DOMDocument('1.0', 'UTF-8');
$XMLDoc->preserveWhiteSpace = false;
$XMLDoc->formatOutput = true;

// SOAP ENVELOPE ELEMENT AND ATTRIBUTES
$soap = $XMLDoc->createElementNS('http://schemas.xmlsoap.org/soap/envelope/', 'soap12:Envelope');
$XMLDoc->appendChild($soap);

$soap->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:soap12', 'http://www.w3.org/2003/05/soap-envelope');
$soap->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
$soap->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:xsd', 'http://www.w3.org/2001/XMLSchema');


// SOAP BODY
$example_element = $XMLDoc->createElement('soap12:Body');
$rootNode = $soap->appendChild($example_element);
  

и вот XML, который он создает.

 <?xml version="1.0" encoding="UTF-8"?>
<soap12:Envelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/>
<soap12:Body>
  

Комментарии:

1. Я не могу воспроизвести проблему, если вы используете echo $XMLDoc->saveXML(); после последней строки в коде, тело является вложенным. Также ваш вывод не является XML, поскольку он будет иметь 2 корневых узла, что недопустимо.