なしのDOMDocumentにXML文字列を追加し、soap:Body
タグの中にXMLメッセージが含まれていSOAP
(1.1、ドキュメント/リテラル)要求を構築する必要があります。は、どのように私はPHPを使用している名前空間
私の最初の問題は、この「プロトコル」を使用したことがないことです。
私のXMLメッセージはかなり複雑ですので、私はSimpleXMLElement
クラスを使ってそれを別々に構築しています。 SOAP
メッセージを作成するには、2つの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
タグ内の2番目の文字列。 - 私が取得するもの: によって自動的に追加された複数の名前空間を持つ
soap:Body
内の2番目の文字列。私が使用している
アルゴリズム(ない完全なコード):
$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
プレフィックスを知りませんを加えた。
この自動動作を行わない2つのXML文字列を追加するにはどうすればよいですか?
DOMDocumentを使用してXMLファイルを最初から作成しようとしましたか? – DanielO