Boa tarde pessoal,
Tenho uma API para enviad dados via XML, eu salvo esse xml em um arquivo físico, os dados no arquivo físico me retornam 2 registros com todas as TAGs certinho, porém, quando eu pego a url e mando no browser, esses registros duplicam, alguém sabe o porque disso ? Estou utilizando laravel e a biblioteca DomDocument do PHP. O código esse abaixo:
<code>
<?php
namespace App\Http\Controllers\API\V1\Integracao;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
use App\Services\ToArray;
use App\Exceptions\ApiException;
use App\Http\Controllers\AppBaseController;
use Illuminate\Support\Str;
use App\Model\MySql\Site\IntegracaoModel as Integracao;
use App\Model\MySql\Site\AuxFotosModel;
use DOMDocument;
/**
*
* Classe criada para retornar informações dos imóveis do site da Sodré
* e integrar com o Zap e Viva Real
*
*/
class IntegracaoController extends AppBaseController
{
private $infos;
private $integracao;
private $urlImagem = "https://fotos.sodresantoro.com.br/fotos.imoveis/";
public function __construct(Integracao $integracao)
{
$this->integracao = $integracao;
}
public function index()
{
$dadosImoveis = $this->integracao->imoveis();
#versao do encoding xml
$dom = new DOMDocument("1.0", "UTF-8");
#retirar os espacos em branco
$dom->preserveWhiteSpace = false;
#gerar o codigo
$dom->formatOutput = true;
#criando o nó principal (root)
$root = $dom->createElement("ListingDataFeed");
$domAttrXMLNS = $dom->createAttribute("xmlns");
$domAttrXMLNS->value = 'http://www.vivareal.com/schemas/1.0/VRSync';
$domAttrXMLNSXSI = $dom->createAttribute("xmlns:xsi");
$domAttrXMLNSXSI->value = "http://www.w3.org/2001/XMLSchema-instance";
$domSchemaLocation = $dom->createAttribute("xsi:schemaLocation");
$domSchemaLocation->value = "http://www.vivareal.com/schemas/1.0/VRSync";
#nó filho
$listings = $dom->createElement("Listings");
foreach ($dadosImoveis as $imoveis) {
$listing = $dom->createElement("Listing");
$details = $dom->createElement("Details");
$media = $dom->createElement("Media");
foreach ($imoveis->imagens as $key => $imagem) {
$this->infos['imagem'] = $this->urlImagem . $imagem->nome;
$item = $dom->createElement("Item", $this->infos['imagem']);
#adiciona atributos nos elementos
$domAttrImage = $dom->createAttribute("medium");
$domAttrImage->value = "image";
$domAttrCap = $dom->createAttribute("caption");
$domAttrCap->value = "img" . $key++;
$domAttrPrimary = $dom->createAttribute("primary");
$domAttrPrimary->value = "true";
$item->appendChild($domAttrCap);
$item->appendChild($domAttrImage);
$media->appendChild($item);
}
$this->infos['lance_inicial'] = $imoveis->vl_lanceinicial;
$this->infos['title'] = $imoveis->title;
$this->infos['descricao'] = $imoveis->descricao;
$this->infos['lote_id'] = $imoveis->lote_id;
$this->infos['endereco'] = $imoveis->Endereco;
$this->infos['imagem'] = '';
//Faço o explode para poder fazer o envio(API não aceita casas decimais)
//Para consultar: https://developers.grupozap.com/feeds/vrsync/elements/details/#list-price
$preco = explode('.', $this->infos['lance_inicial']);
$listPrice = $dom->createElement("ListPrice", $preco[0]);
$description = $dom->createElement("Description", htmlspecialchars(str_limit($this->infos['descricao'], 2000)));
$title = $dom->createElement("Title", $this->infos['title']);
$listingID = $dom->createElement("ListingID", $this->infos['lote_id']);
$transactionType = $dom->createElement("TransactionType", "For Sale");
$usageType = $dom->createElement("UsageType", "Residential");
$propertyType = $dom->createElement("PropertyType", "Residential / Apartment");
#adiciona os nós
$details->appendChild($usageType);
$details->appendChild($propertyType);
$details->appendChild($description);
$details->appendChild($listPrice);
$listing->appendChild($title);
$listing->appendChild($listingID);
$listing->appendChild($transactionType);
$listing->appendChild($details);
$listing->appendChild($media);
$listings->appendChild($listing);
}
$root->appendChild($listings);
$root->appendChild($domAttrXMLNS);
$root->appendChild($domAttrXMLNSXSI);
$root->appendChild($domSchemaLocation);
$dom->appendChild($root);
# Para salvar o arquivo, descomente a linha
$dom->save("listagem-imoveis.xml");
#cabeçalho da página
#header("Content-Type: text/xml");
# imprime o xml na tela
print $dom->saveXML();
return response($dom->saveXML());
}
public function download()
{
return response()->file(public_path('listagem-imoveis.xml', 'Imóveis'));
}
}
</code>