하지 않고있는 DOMDocument에 XML 문자열을 추가하고 soap:Body
태그 내부에 XML 메시지를 포함하는 SOAP
(1.1, 문서/리터럴) 요청을 구축해야합니다.은 어떻게 PHP를 사용하고 네임 스페이스
내 첫 번째 문제는 전에이 "프로토콜"을 사용하지 않았다는 것입니다.
내 XML 메시지가 매우 복잡하므로 별도로 빌드하려면 SimpleXMLElement
클래스를 사용하고 있습니다. SOAP
메시지를 작성하려면 두 개의 XML 문자열이 있습니다.
1- SOAP
구조입니다.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header></soap:Header>
<soap:Body>...</soap:Body>
</soap:Envelope>
2 내 사용자 정의 XML 문자열
<eSocial xmlns="http://www.esocial.gov.br/schema/lote/eventos/envio/v2_2_02" grupo="1">
<envioLoteEventos>
<ideEmpregador tpInsc="1" nrInsc="0000000012"/>
<ideTransmissor tpInsc="1" nrInsc="0000000012"/>
<eventos>
<eSocial xmlns="http://www.esocial.gov.br/schema/evt/evtInfoEmpregador/v2_2_02">
<evtInfoEmpregador Id="8515">...</evtInfoEmpregador>
</eSocial>
</eventos>
</envioLoteEventos>
</eSocial>
- 내가 필요한 것 : 두 번째 문자열
soap:Body
태그 안에 정확히 그대로. - 내가 얻는 것 :
DOMDocument
에 의해 자동 추가 된soap:Body
내부의 두 번째 문자열soap:Body
. 내가 사용
알고리즘 (안 전체 코드) :
$soapBodyElement = new SimpleXMLElement($soapBodyString);
$customMessageElement = new SimpleXMLElement($customMessageString);
// Some operations...
$domParent = dom_import_simplexml($soapBodyElement);
$domChild = dom_import_simplexml($customMessageElement);
$domDocument = $domParent->ownerDocument->importNode($domChild, true);
$domParent->appendChild($domDocument);
echo $domParent->ownerDocument->saveXML();
출력 : (? 네임 스페이스) 솔직히
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Header/>
<soap:Body>
<eSocial xmlns="http://www.esocial.gov.br/schema/lote/eventos/envio/v2_2_02" xmlns:default="http://www.esocial.gov.br/schema/evt/evtInfoEmpregador/v2_2_02" xmlns:default1="http://www.w3.org/2000/09/xmldsig#" grupo="1">
<envioLoteEventos>
<ideEmpregador tpInsc="1" nrInsc="0000000012"/>
<ideTransmissor tpInsc="1" nrInsc="0000000012"/>
<eventos>
<default:eSocial xmlns="http://www.esocial.gov.br/schema/evt/evtInfoEmpregador/v2_2_02">
<default:evtInfoEmpregador Id="2550">...</default:evtInfoEmpregador>
</default:eSocial>
</eventos>
</envioLoteEventos>
</eSocial>
</soap:Body>
</soap:Envelope>
, 나는 왜 default
접두사를 모른다 가 추가되었습니다.
이 자동 동작없이 두 개의 XML 문자열을 추가하려면 어떻게해야합니까?
DOMDocument를 사용하여 처음부터 XML 파일을 만들려고 했습니까? – DanielO