2017-04-05 107 views
0

我正在尝试编写一个API将数据从magento写入我的POS系统。我的POS供应商给我一个代码,我需要以XML 1.0格式编写数据。 我用SimpleXML的形式写了数据,因为我需要做一些循环来获得我需要的所有数据。SimpleXML重新格式化

问题是API没有读取我正确写入的数据。我已经尝试使用DOM重新格式化代码,但没有成功。我如何编辑这个SimpleXML,以便我发布的数据与XML 1.0相同。

显然什么引起的问题是无法读取的SimpleXML的rawurlencode功能,但我的API只能理解这样...

我新的PHP和XML,所以任何建议,欢迎。提前致谢。

$xml = '<?xml version="1.0" encoding="UTF-8"?><pedido></pedido>'; 
 
$xmlpost = new SimpleXMLElement($xml); 
 
$pedidob = $xmlpost->addChild('pedido'); 
 
$clienteb = $pedidob->addChild('cliente'); 
 
$clientebno = $clienteb->addChild('nome',$nome); 
 
$clientebcp = $clienteb->addChild('cpf_cnpj',$cpf); 
 
$clienteben = $clienteb->addChild('endereco',$rua); 
 
$clientebnu = $clienteb->addChild('numero',$numero); 
 
$clientebco = $clienteb->addChild('complemento',$complemento); 
 
$clientebba = $clienteb->addChild('bairro',$bairro); 
 
$clientebce = $clienteb->addChild('cep',$cep); 
 
$clientebci = $clienteb->addChild('cidade',$cidade); 
 
$clientebuf = $clienteb->addChild('uf',$estado); 
 
$clientebfo = $clienteb->addChild('fone',$telefone); 
 
$clientebce = $clienteb->addChild('celular',$celular); 
 
$clientebem = $clienteb->addChild('email',$email); 
 
$itensb = $pedidob->addChild('itens'); 
 
\t for ($k = 0; $k < $arrayl; $k++) { 
 
    \t \t $itemb = $itensb->addChild('item'); 
 
    \t \t $codigob = $itemb->addChild('codigo', $infopp[$k][0]); 
 
    \t \t $descricaob = $itemb->addChild('descricao', $infopp[$k][1]); 
 
\t \t \t $qtdeb = $itemb->addChild('qtde', $infopp[$k][2]); 
 
\t \t \t $vlrunitb = $itemb->addChild('vlr_unit', $infopp[$k][3]); 
 
\t \t } 
 
$parcelasb= $pedidob->addChild('parcelas'); 
 
$parcelab = $parcelasb->addChild('parcela'); 
 
$vlrb = $parcelab->addChild('vlr',$Subtotal); 
 
$freteb = $pedidob->addChild('vlr_frete',$Shipping); 
 

 
$dom = new DOMDocument('1.0'); 
 
$dom->preserveWhiteSpace = true; 
 
$dom->formatOutput = true; 
 
$dom->loadXML($xmlpost->asXML()); 
 
echo $dom->saveXML(); 
 

 
$posts = array (
 
    "apikey" => "*******", 
 
    "xml" => rawurlencode($xmlpost) 
 
);

回答

0

好了,这是很简单其实......我只需要创建另一个变量和存储我的SimpleXML asXML()里面

$ XMLvariable = $ simpleXMLvariable-> asXML();