Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo Freitas Nobrega

xml em outro servidor!

Recommended Posts

Bem... ja são mais de 3 da madruga e não aguento mais procurar a resposta disso, então se alguém tiver uma luz, por favor não deixe de comentar!

 

Estou criando um simples código que poderá ser usado em qualquer site para ler as "últimas noticias" de um blog. Estou utilizando para isto javascript (DOM) e XML. O que está acontecendo é que não consigo manusiar o xml que esta em meu servidor acessando-o de outro servidor (deu pra entender <_< )...

 

Bem já li a respeito e vi que todos dizem a mesma coisa, não é possível ler um xml de outro servidor. Mas não custa nada postar aqui para ver se alguém pode ajudar. Vi um código em asp que junto com XMLHttpResquest consegue acesar o xml de um site americano de notícias, pelo menos é o que dizia fazer, não programo em asp e não pude realmente comprovar isso, mas sei php, então se alguém tiver também uma sugestão com php ou ajax pode comentar pois vai ser de grande valia.

 

Vou colocar o código para ajudar em uma eventual dúvida:

var docXML = null;function criaXML() {	if (window.ActiveXObject)	{ 			docXML = new ActiveXObject("Msxml2.DOMDocument.3.0");			docXML.async = false;			docXML.load("http://www.ilhasolteira.net/blog/familia.xml");	} 	else if(document.implementation && document.implementation.createDocument) 			docXML = document.implementation.createDocument("","doc",null);}function ExibeXML() {	if(docXML==null) {		alert('Erro na utilização do XMLdocument');	} else {				var raiz = docXML.childNodes[1].firstChild.childNodes;				var id = docXML.childNodes[1].firstChild.childNodes[0].childNodes[0].nodeValue;		var titulo = docXML.childNodes[1].firstChild.childNodes[1].childNodes[0].nodeValue;		var chapeu = docXML.childNodes[1].firstChild.childNodes[2].childNodes[0].nodeValue;				var box = document.getElementById('blogEnnes');		box.innerHTML = "<a href='http://www.ilhasolteira.net/blog/comentar.php?id='" + id + "' target='_blank' title='" + titulo + "'><h5>" + titulo + "</h5></a><h6>" + chapeu + "</h5><h6 class='blogCredito'>© blog luciano ennes</h6>";					}}

para chamar o usuário "deveria" apenas colar este código em seu html:

<script language="javascript" src="http://www.ilhasolteira.net/blog/xml.js"></script><style type="text/css" media="all">@import url(http://ilhasolteira.net/blog/css/publicar.css);</style><div id="blogEnnes" class="blogEnnes"></div><script>criaXML();ExibeXML();</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Otem não quando postei esse novo tópico coloquei ele nesta sessão pois vi “XML”, agora dando uma melhor navegada no forum pude ver que a sessão no qual melhor se enquadra a dúvida seria a de javascript e dhtml, se o moderador poder transferir isso para mim, eu agradeceria.valew...

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK Paulo Nobrega, como ainda não conseguiu uma ajuda aqui na seção Webstandards: CSS / XML / XHTML/ HTML vou mover seu tópico para seção que solicitou, quem sabe lá o pessoal consiga te ajudar.

Irei manter um link para o seu tópico aqui na seção, talvés o pessoal te ajude. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você reduzir a segurança do seu navegador ele consegue ler (porem isso seria falha na seguraça)

utilize PHP ou JAVA ou ASP para ler o arquivo XML

 

tipo em PHP

 

 

load.php

<?phpheader('Content-type: text/xml');//defie o PHP como XML$arquivo = 'http://site.com/path/arquivo.xml';$fp = fopen($arquivo,'r');$texto = fread($fp, filesize($arquivo));echo $texto;?>

e no ajax:

docXML.load("load.php");

Compartilhar este post


Link para o post
Compartilhar em outros sites

então fiz até um script em php que capturava o dados do xml, mas estou com dificuldade em conseguir fazer com que ele guarde os dados em variaveis como fiz nessa parte em DOM:

 

var id = docXML.childNodes[1].firstChild.childNodes[0].childNodes[0].nodeValue;var titulo = docXML.childNodes[1].firstChild.childNodes[1].childNodes[0].nodeValue;var chapeu = docXML.childNodes[1].firstChild.childNodes[2].childNodes[0].nodeValue;

o Php que tinha feito para colocar os dados dentro de um input era esse:

$inicial = array (	'ID'		=> "<input type='hidden' id='ids' value='",	'TITULO'		=> "<input type='hidden' id='titulo' value='",	'CHAPEU'		=> "<input type='hidden' id='chapeu' value='"	);$final = array (	'ID'			=> "' />",	'TITULO'		=> "' />",	'CHAPEU'		=> "' />",	);function TagInicial($parser, $elemento, $attrs) {	global $inicial;	echo $inicial[$elemento];}function TagFinal($parser, $elemento) {	global $final;	echo $final[$elemento];}function TrataCaracteres($parser, $dados) {	echo $dados;}$myXML = xml_parser_create();xml_set_element_handler($myXML, "TagInicial", "TagFinal");xml_set_character_data_handler($myXML, "TrataCaracteres");if(!($fp = fopen("familia.xml", "r"))) die ("não foi possível carregar o arquivo XML");while($dados = fread($fp, 4096)) {	if(!xml_parse($myXML, $dados, feof($fp))) {		die ( sprintf("Erro XML: %s na linha %d",		xml_error_string(xml_get_error_code($myXML)),		xml_get_current_line_number($myXML)));	}}xml_parser_free($myXML);

Agora não estou conseguindo colocalos em variáveis, se tiver alguma segestão posta ai por favor!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta retornando o seguinte erro!!!

A página XML não pode ser exibida Não é possível exibir a entrada XML usando a folha de estilos XSL. Corrija o erro e clique no botão Atualizar ou tente novamente mais tarde. --------------------------------------------------------------------------------Em um documento XML só são permitidos elementos de nível superior. Erro ao processar o recurso 'http://localhost/new_blog/g...<b>Warning</b>:  filesize(): Stat failed for http://www.ilhasolteira.net/blog/familia.xml (errno=2 - No such fil...

Compartilhar este post


Link para o post
Compartilhar em outros sites

desculpe equeci que assim não da pra ler host externo

faça

assim

 

<?phpheader('Content-type: text/xml');$handle = fopen ("http://site/xml.xml", "r");while (!feof ($handle)) {	$buffer = fgets($handle, 4096);	echo $buffer;}fclose ($handle);?>

ou assim

<?phpheader('Content-type: text/xml');$lines = file ('http://site/xml.xml');for ($i=0;$i<count($lines);$i++) {	echo $lines[$i]."\n";}?>

ou assim hehe esse é bem simples

<?phpheader('Content-type: text/xml');echo implode ('', file ('http://site/xml.xml'));?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem também deu acesso negado, os códigos estão assim:

 

XML (familia.xml):

<?xml version="1.0" encoding="iso-8859-1"?><group>	<news>		<id>1900</id>		<titulo>Testando a Dengue</titulo>		<chapeu>A cidade de Ilha Solteira esta em estado de alerta</chapeu>	</news>	</group>

PHP (getnews.php):

<?phpheader('Content-type: text/xml');//defie o PHP como XML$handle = fopen ("familia.xml", "r");while (!feof ($handle)) {	$buffer = fgets($handle, 4096);	echo $buffer;}fclose ($handle);?>

DOM (xml.js):

var docXML = null;function criaXML() {	if (window.ActiveXObject)	// Internet Explorer	{ 			docXML = new ActiveXObject("Msxml2.DOMDocument.3.0");			docXML.async = false;			docXML.load("http://www.ilhasolteira.net/blog/getnews.php");			ExibeXML();	} 	else if(document.implementation && document.implementation.createDocument) 			docXML = document.implementation.createDocument("","doc",null);}function ExibeXML() {	if(docXML==null) {		alert('Erro na utilização do XMLdocument');	} else {				var raiz = docXML.childNodes[1].firstChild.childNodes;				var id = docXML.childNodes[1].firstChild.childNodes[0].childNodes[0].nodeValue;		var titulo = docXML.childNodes[1].firstChild.childNodes[1].childNodes[0].nodeValue;		var chapeu = docXML.childNodes[1].firstChild.childNodes[2].childNodes[0].nodeValue;								var box = document.getElementById('blogEnnes');		box.innerHTML = "<a href='http://www.ilhasolteira.net/blog/comentar.php?id='" + id + "' target='_blank' title='" + titulo + "'><h5>" + titulo + "</h5></a><h6>" + chapeu + "</h5><h6 class='blogCredito'>© blog luciano ennes</h6>";					}}window.load = criaXML();

para chamar estou usando assim:

<div id="blogEnnes" class="blogEnnes"></div><style type="text/css" media="all">@import url(http://ilhasolteira.net/blog/css/publicar.css);</style><script language="javascript" src="xml.js"></script>

Será que tem algo errado :unsure: , só avisando que localmente da certinho!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas é por que o PHP tem de estar no mesmo site

 

eu mostrei é assim:

docXML.load("getnews.php");<~certo

 

não assim:mas é por que o PHP tem de estar no mesmo site

 

eu mostrei assim:

docXML.load("http://www.ilhasolteira.net/blog/getnews.php");<~errado

assim é obvio q num vai funcionar eu expliquei sobre a segurança

 

poe o PHP no mesmo site que está usando ajax assim

 

docXML.load("getnews.php");<~certo

 

o PHP é que vai trazer de outro site

<?phpheader('Content-type: text/xml');//defie o PHP como XML//$handle = fopen ("familia.xml", "r");<~errado$handle = fopen ("http://www.ilhasolteira.net/blog/familia.xml", "r");<~certowhile (!feof ($handle)) {	$buffer = fgets($handle, 4096);	echo $buffer;}fclose ($handle);?>
que num vai ter erro

 

falow

Compartilhar este post


Link para o post
Compartilhar em outros sites

vixi desculpa não havia visto isso, bem no mesmo servidor ta dando certo, mas não to conseguindo um lugar para testar (outro servidor), se você poder da uma olhada se deu certo ai também eu agradeço silverfox

 

arquivo para teste

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><div id="blogEnnes" class="blogEnnes"></div><style type="text/css" media="all">@import url(http://ilhasolteira.net/blog/css/publicar.css);</style><script language="javascript" src="http://www.ilhasolteira.net/blog/xml.js"></script></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara teu erro tah na JAVASCRIPT se você abrir o arquivo PHP ele le normal

<?phpheader('Content-type: text/xml');//defie o PHP como XML$handle = fopen ("http://www.ilhasolteira.net/blog/familia.xml", "r");while (!feof ($handle)) {	$buffer = fgets($handle, 4096);	echo $buffer;}fclose ($handle);?>
mas você percebeu q você nem usou o comando getElementsByTagName()

cara tem algo errado e é no seu JAVASCRIPT verifica ae que ta faltando coisa ...

 

é q é dificil eu ter de ler seu erro

e analizar a coisa toda

mas vai na fé o erro não é no PHP

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.