Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

M4n0w4r

[Resolvido] ofx para xml

Recommended Posts

Olá galera do bem Imagem Postada

 

Eu procurei por muito tempo na net um script que converte arquivos ofx para xml e so achei um único código e ainda incompleto. Não sei como não pode ter uma coisa tão básica que muita gente deve precisar ou vai precisar futuramente.

 

Fiz o tal script e é totalmente funcional so que preciso da ajuda de todos para melhorá-lo ainda mais, fiquem a vontade para modificar e compartilhar.

// A modificação do corpo foi baseado em http://holloway.co.nz/subaccounting/ofx_sgml_to_xml.phps<?php	function sgmlParaXml ($conteudo) {		if (! $comecaOfx = strpos ($conteudo, "<OFX>")) throw new exception ("Tag OFX não encontrada.");				// Cabeçalho		$cabecalho = substr ($conteudo, 0, $comecaOfx); // Não precisa de excessão já que $comecaOfx passou na função strpos				$linhas = explode ("n", $cabecalho); // Não precisa de excessão, sempre vai retornar um array, vazio ou não				$cabecalho = ""; $i = 0;			foreach ($linhas as $linha) {			$separados = explode (":", $linha);					if (count ($separados) === 2) {				if ($separados[1] !== "") {					$separados[0] = trim ($separados[0]);										if ($separados[0] === "OFXHEADER" || $separados[0] === "VERSION" || $separados[0] === "SECURITY" || $separados[0] === "OLDFILEUID" || $separados[0] === "NEWFILEUID") {						if ($separados[0] === "OFXHEADER") {							$separados[1] = "200";						} else if ($separados[0] === "VERSION") {							$separados[1] = "211";						}											$cabecalho .= $separados[0] . " = "" . strtoupper ($separados[1]) . "" ";											$i ++;					}				}			}		}				if ($i !== 5) throw new exception ("Sgml possui cabeçalho inválido.");				$cabecalho = "<?OFX " . $cabecalho . "?>";				// Corpo		$corpo = substr ($conteudo, $comecaOfx); // Não precisa de excessão já que $comecaOfx passou na função strpos				if (! preg_match_all ("/</[^>]+>/", $corpo, $fechaTags)) throw new exception;				$fechaTags = array_fill_keys ($fechaTags[0], null);		$linhas = explode ("n", $corpo);		$corpo = "";				foreach ($linhas as $linha) {			$corpo .= trim ($linha);						if (preg_match_all ("/<[^/>]+>/", $linha, $comecaTags)) {				$comecaTags[0] = array_reverse ($comecaTags[0]);								foreach ($comecaTags[0] as $comecaTag) {					$fechaTag = "</" . substr ($comecaTag, 1);										if (! array_key_exists ($fechaTag, $fechaTags)) {						$corpo .= $fechaTag;					}				}			}		}				// É impossível pelos diversos tratamentos de erros acima que a variável $corpo seja vazia				return $cabecalho . $corpo;	}		// Exemplo	$conteudo = "		OFXHEADER:100		DATA:OFXSGML		VERSION:102		SECURITY:NONE		ENCODING:USASCII		CHARSET:1252		COMPRESSION:NONE		OLDFILEUID:NONE		NEWFILEUID:NONE				<OFX>			<SIGNONMSGSRSV1>				<SONRS>					<STATUS>						<CODE>0						<SEVERITY>INFO					</STATUS>						<DTSERVER>00000000000000[-03:EST]					<LANGUAGE>POR				</SONRS>			</SIGNONMSGSRSV1>		</OFX>	";		try {		echo sgmlParaXml ($conteudo);		header ("Content-type: text/xml");	} catch (exception $e) {		echo $e;	}?>
Foi mal não é converter sgml para xml e sim ofx para xml Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.