Escrever (Salvar) XML com JavaScript [RESOLVIDO]

1. Escrever (Salvar) XML com JavaScript [RESOLVIDO]

Hudson Martins
hux_

(usa Debian)

Enviado em 18/08/2008 - 12:16h

Bom dia a todos... Estou com uma pequena dúvida. Alguém saberia como é feito pra inserir dados num arquivo XML ?

Desde já agradeço a atenção.


  


2. sem duvidas

Gedalias Costa
gedalinux

(usa Slackware)

Enviado em 05/12/2008 - 12:03h

uma pergunta ta vaga como esta fica dificil de ajudar, nos passe um problema
e tentaremos te ajudar

isto que vc passou é mais uma curiosidade que uma dúvida


3. Re: Escrever (Salvar) XML com JavaScript [RESOLVIDO]

Hudson Martins
hux_

(usa Debian)

Enviado em 09/12/2008 - 08:50h

gedalinux, na verdade é uma dúvida mesmo... pelo fato de já conseguir fazer o javascript ler um arquivo xml.
Mas a idéia era basicamente a seguinte:
Criar um pequeno fórum usando apenas arquivo xml para armazenar as informações deixadas pelos participantes. Visto que o pessoal precisava ver primeiro um site funcionando com algumas funções e prosseguir para um fórum mais robusto com as informações salvas em um banco de dados.

Como disse, já consegui ler um arquivo xml e exibir em html. A minha dúvida é saber se ele (javascript) realmente possue alguma função que possibilite escrever em xml ?

Desde já agradeço a ajuda.


4. Javascript lado cliente

Gedalias Costa
gedalinux

(usa Slackware)

Enviado em 29/12/2008 - 11:31h

O javascript tal qual definido pela ECMA v3 nao pode escrever em aquivos de forma alguma, o jsScript da MS ate pode usando activeX, mas isto é preso a plataforma.
Quando falo de javascript me refiro ao lado cliente,
e ele é capaz de carregar javascript atraves do objeto Document e metodo load, tanto mozilla family que IE, que não tem família nem amigos, usam este recurso.
Daí veio a febre do ajax e todos entraram em crise e passaram a carregar documentos das formas mais mirabolantes que se pode imaginar.
Tudo isso pra dizer que só podemos carregar XML nativamente usando javascript lado cliente, o ato de salvar no servidor é preciso passar - vamos ajaxear - o XML pro servidor e usar DOM do lado servidor ou como disse, ja que não quer fazer algo poderoso, simplesmente salvar ser documento do jeito que chega em um arquivo...

Javascript que recebe XML e passa pro servidor uma string XML que pode ser recuperada e salva em um documento xml

function HTTPSocket(){
HTTPSocket.httpRequest = null;
this.domDocument = null
// Testa para navegadores Mozilla-Core
if (window.XMLHttpRequest) {
HTTPSocket.httpRequest = new XMLHttpRequest();
this.domDocument = document.implementation.createDocument('', '', null);
}

if (window.ActiveXObject) { // if n2
//"Msxml.XMLHTTP"->nao funciona em conjunto com o parametro do activex abaixo
var httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
HTTPSocket.httpRequest = httpRequest;
this.domDocument = new ActiveXObject('Microsoft.XMLDOM');

}
if (!HTTPSocket.httpRequest) {
window.alert(" O navegador usado não dá suporte a Comunicação Assíncrona.\r\nTroque de Navegador ou atualize sua versão.")
}
HTTPSocket.domDocument = this.domDocument;
}
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
HTTPSocket.prototype.doRequest = function(domXML){
var Socket = HTTPSocket.httpRequest;
if (Socket) {
xmlString = "datagrid=" + xmlString;
Socket.open("POST", "../processa/", true);
Socket.setRequestHeader("Content-type","application/x-www-form-urlencoded");
Socket.setRequestHeader("Content-length", xmlString.length);
Socket.setRequestHeader("Connection", "close");
Socket.send(xmlString);
Socket.onreadystatechange = this.getResponse;
} else {
window.alert("Houve um erro.\r\nObjeto HTTPSocket não inicializado.");
}
}
//-------------------------------------------------------
HTTPSocket.prototype.getResponse = function(){
var Socket = HTTPSocket.httpRequest;
if (Socket.readyState == 4) {
if (Socket.status == 200) {
alert(Socket.responseText);
//carrega o documento XML vindo do servidor
HTTPSocket.domDocument.load(Socket.responseText);
//agora é só usar os metodos do DOM em javascript para apresentar ana tela.
var doc = HTTPSocket.domDocument.documentElement
}
}
}


o Arquivo php fica bem simples
<?php
//o index datagrid foi configurado no JS
if(isset($_POST) && $_POST["datagrid"]){
//salva o arquivo com os dados do crus,
//do jeito que chega do cliente
//cuidado, é necessário sempre uma validacao,
//estou so facilitando as coisas
file_put_contents("nomedinamico.xml",$_POST["datagrid"]);
}

?>

Lendo os arquivos com PHP, para ser usado com sockets do
Ajax, do contrario, se aleitura for diretamente com o JS,
queira desconsiderar isto

<?php

$arquivoXml = file_get_contents("arqsolicitado.xml");
echo $arquivoXml;

?>


atencao isto é só uma ideia básica, faltam pedaços de códigos e ideias
porque para fechar via forum é muito assunto

o id de XML no php sem uma DTD so tem funcionado "comigo" usando xml:id="valordoID" e isto está documentdo no php.net, sem isto o domdocument->getElementByID("valordoID"), costuma dá pau, mas inclusive depende da distribuição Linux que estiver usando, não deu erro com slackware, porem apresentou com SUSE ao nao usar xml:id..



5. Re: Escrever (Salvar) XML com JavaScript [RESOLVIDO]

Hudson Martins
hux_

(usa Debian)

Enviado em 30/12/2008 - 16:24h

Muito obrigado pela ajuda... admito que eu prefiro usa o php... mas era apenas pra mostrar
uma ferramenta funcional. Depois iramos partir para hospedar em um servidor com recursos de banco de dados e suporte a php.
Mas já ajudou bastante... muito obrigado mais uma vez.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts