Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Um pequeno exemplo:
<%
str_saida = "<?xml version=""1.0"" encoding=""UTF-8"" ?>"
str_saida = str_saida & "<classificacao area=""classificacao"">"
str_saida = str_saida & "</classificacao>"
set fs = Server.CreateObject("Scripting.FileSystemObject")
set tfile = fs.CreateTextFile("c:\file.xml")
tfile.WriteLine(str_saida)
%>
Tenho que colocar um xml nesse formato, com encoding UTF-8 já que irei usá-lo num mac para desenvolvimento de aplicações para iPhone. Mas ele simplesmente rejeita esse xml por causa do ecoding dele.
Se eu pegar um xml que é aceitável e colocar no notepad++ vai aparecer lá em baixo "UNIX" "ANSI as UTF-8"
Sendo o que é gerado pela página "Dos\Windows" "ANSI"
Tenho certeza que esse é o problema pois já peguei o conteúdo gerado pela página e colei dentro do outro arquivo que é aceitável e ele leu.
Como faço para gerar um XML assim?
Já havia pesquisado antes e não achei nada sobre :(
Falando nisso depois vou contribuir com alguns scripts que utilizo aqui no dia-a-dia
se kiser me enviar em posso disponibilizar no lab. de script...
po ninguém sabe encodar xml desse jeito? assim n vai dar pra desenvolver aplicação pra iphone :S
já li todos os capítulos disso e não tem nada sobre como encodar o arquivo
Pq se você reparar eu to escrevendo ele com o encoding ali especificado, nesse link ele só explica a codificacao ISO, UTF e etc.
Eu crio o arquivo pela página asp que pode ser lido por qualquer browser e etc, menos pelo mac/iphone, o arquivo na criação foi encodado assim, ANSI.
/applications/core/interface/imageproxy/imageproxy.php?img=http://img697.imageshack.us/img697/3930/imaginem1.jpg&key=2d602464bc6ce33b0aff5b174fe259e16181196d5b9ce908bda716b8b658c666" alt="Imagem Postada" />
/applications/core/interface/imageproxy/imageproxy.php?img=http://img188.imageshack.us/img188/4048/imaginem2.jpg&key=329fb8abdf48b31f6940bd942f51eae78e56d338e60c135d1384009db59a1c55" alt="Imagem Postada" />
Já o segundo exemplo é um arquivo q eu peguei do próprio iphone de exemplo e colei o mesmo conteúdo do arquivo que é gerado e ele consegue ler pq ele foi criado daquela forma. Eu queria saber se tem como fazer isso quando estou gerando ele pela página asp pq só assim ele lê :/
você pode grava-lo assim
Set inst = MsXml.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
onde no encoding você pode seta-lo para ISO-8859-1 ou UTF-8
e depois na pagina k usara
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
eu insiro essa linha em qual trecho do código?
Set inst = MsXml.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
achei esse script aqui xanburzum, vou tentar com ele, espero que funcione
CRIAR ARQUIVO
<%
' Cria uma instância do controle
Set MsXml = Server.CreateObject("MSXML2.DOMDocument.4.0")
' Caminho onde o arquivo será salvo
str_Arquivo = Server.MapPath("arquivo.xml")
' Verifica se o arquivo existe
If MsXml.Load(str_Arquivo) Then
Response.Write "O arquivo já existe!"
Else
' O método createElement adiciona os elementos
Set root = MsXml.createElement("ComponentesASP")
MsXml.appendChild(root)
' O método createProcessingInstruction possui 2 argumentos: o TARGET = "xml" e DATA = "version='1.0' encoding='ISO-8859-1'"
Set inst = MsXml.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
MsXml.insertBefore inst, root
' Adiciona um comentário ao documento XML
Set com = MsXml.createComment("Documento XML de exemplo")
MsXml.insertBefore com, root
Set onode = MsXml.createElement("ManipulaçãoXML")
' *****************************************************
' * Adiciona um ítem ao documento
' *****************************************************
MsXml.documentElement.appendChild(onode)
Set inode = MsXml.createElement("item")
onode.appendChild(inode)
Set child = MsXml.createElement("nome")
child.Text = "MSXML - Microsoft"
inode.appendChild(child)
Set child = MsXml.createElement("versão")
child.Text = "2.0 / 2.6 / 3.0 / 4.0"
inode.appendChild(child)
Set child = MsXml.createElement("fabricante")
child.Text = "http://www.microsoft.com/"
inode.appendChild(child)
' *****************************************************
' *****************************************************
' * Adiciona um ítem ao documento
' *****************************************************
MsXml.documentElement.appendChild(onode)
Set inode = MsXml.createElement("item")
onode.appendChild(inode)
Set child = MsXml.createElement("nome")
child.Text = "ASP XML Parser - Chilkat Software"
inode.appendChild(child)
Set child = MsXml.createElement("versão")
child.Text = "2.2.1"
inode.appendChild(child)
Set child = MsXml.createElement("fabricante")
child.Text = "http://www.chilkatsoft.com/"
inode.appendChild(child)
' *****************************************************
' Salva o arquivo no caminho especificado
MsXml.save(str_Arquivo)
' Tira os objetos da memória
Set child = Nothing
Set inode = Nothing
Set onode = Nothing
Set com = Nothing
Set inst = Nothing
Set root = Nothing
Response.Write "Arquivo XML criado com sucesso!"
End If
' Tira o objeto da memória
Set MsXml = Nothing
%>
LER ARQUIVO
<%
' Cria uma instância do controle
Set MsXml = Server.CreateObject("MSXML2.DOMDocument.4.0")
' Indicamos que o download em segundo plano não é permitido
MsXml.async = False
' Carrega o documento XML
MsXml.load( Server.MapPath("arquivo.xml") )
' O método parseError contém informações sobre o último erro ocorrido
If MsXml.parseError <> 0 Then
Response.Write "Código do erro: "& MsXml.parseError.ErrorCode &"<br />"
Response.Write "Posição no arquivo: "& MsXml.parseError.FilePos &"<br />"
Response.Write "Linha: "& MsXml.parseError.Line &"<br />"
Response.Write "Posição na linha: "& MsXml.parseError.LinePos &"<br />"
Response.Write "Descrição: "& MsXml.parseError.Reason &"<br />"
Response.Write "Texto que causa o erro: "& MsXml.parseError.srcText &"<br />"
Response.Write "Arquivo com problemas: " & MsXml.parseError.URL'Looping para percorrer todos os elementos filhos
For i = 0 To raiz.childNodes.length -1
' A propriedade NodeName contém o nome do elemento e a propriedade childNodes contém a lista de elementos filhos
Response.Write raiz.NodeName & "<br />"
Response.Write raiz.childNodes.item(i).childNodes.item(0).text & "<br />"
Response.Write raiz.childNodes.item(i).childNodes.item(1).text & "<br />"
Next' Tira o objeto da memória
Set MsXml = Nothing
%>
muito bem
funcionou com esse método, só fiz as modificações usando MSXML2.DOMdocument.3.0 pq nao tinha o 4.0 no servidor e usando o encoding='UTF-8' na criação do arquivo, o que é bem diferente de escrever isso nele :)
Set inst = MsXml.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'")
dá uma pesquisada no forum k existem varios ótimos exemplos de como criar e manipular XML