Ir para conteúdo

Arquivado

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

KhaosDoctor

Salvando XML puro no MySQL

Recommended Posts

Olá pessoa,

 

Venho ajudando a galera ai por algum tempo, mas hoje é a minha vez de pedir ajuda.

 

Estou com um aplicação em ASP.NET usando a linguagem VB e preciso saber como posso pegar um arquivo XML existente, que o usuário fará um upload, e salvá-lo dentro de um banco de dados MySQL, todos os jeitos que tentei até agora convertem o XML em uma string porém sem as tags, ele interpreta o arquivo ao invés de copiá-lo.

 

O que eu quero é o seguinte, transformar tudo que está dentro daquele XML em uma string, uma cópia do arquivo em formato string e não uma string gerada a partir da leitura do XML, para assim eu poder salvá-lo no banco de dados.

 

O outro modo que eu havia pensado seria converter o arquivo em si e não seu conteúdo, e salvá-lo no banco de dados, mas também nunca fiz este tipo de função.

 

Se a galera puder me dar uma luz aqui eu agrdeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer fazer isso em ASP.Net ou ASP Classic.

 

 

independente da linguagem, quando for guardar no bd, troque os caracteres (use o replace) das tags por outro e quando precisar ler novamente convertar para os caracteres originais.

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu preciso ler exatamente o que está escrito no XML, ele está interpretando quando eu uso o StreamReader, então ao invés de aparecer assim:

 

<doc>
<assembly>
<name>XMLup</name>
</assembly>
<members>
<member name="F:XMLup.ChangePassword.ChangeUserPassword">
<summary>ChangeUserPassword control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="P:XMLup.My.MyWebExtension.Application">
<summary>Returns information about the current application.</summary>
</member>
<member name="P:XMLup.My.MyWebExtension.Computer">
<summary>Returns information about the host computer.</summary>
</member>
<member name="P:XMLup.My.MyWebExtension.User">
<summary>Returns information for the current Web user.</summary>
</member>
<member name="P:XMLup.My.MyWebExtension.Request">
<summary>Returns Request object.</summary>
</member>
<member name="P:XMLup.My.MyWebExtension.Response">
<summary>Returns Response object.</summary>
</member>
<member name="P:XMLup.My.MyWebExtension.Log">
<summary>Returns the Asp log object.</summary>
</member>
<member name="P:XMLup.My.MyWebExtension.WebServices">
<summary>
Provides access to WebServices added to this project.
</summary>
</member>
<member name="T:XMLup.My.MyWebExtension">
<summary>
Module used to define the properties that are available in the My Namespace for Web projects.
</summary>
<remarks/>
</member>
<member name="F:XMLup.Site.HeadContent">
<summary>HeadContent control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.Site.NavigationMenu">
<summary>NavigationMenu control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.Site.MainContent">
<summary>MainContent control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.Login.RegisterHyperLink">
<summary>RegisterHyperLink control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.Login.LoginUser">
<summary>LoginUser control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.Register.RegisterUser">
<summary>RegisterUser control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.Register.RegisterUserWizardStep">
<summary>RegisterUserWizardStep control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.About.MyFile">
<summary>MyFile control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.About.btn1">
<summary>btn1 control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.About.LabelErro">
<summary>LabelErro control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.About.Label1">
<summary>Label1 control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
<member name="F:XMLup.About.sButton">
<summary>sButton control.</summary>
<remarks>
Auto-generated field. To modify move field declaration from designer file to code-behind file.
</remarks>
</member>
</members>
</doc>

Ele está interpretando as tags e colocando só as strings. Em outras palavras, o campo do banco de dados tem que ficar exatamente como eu coloquei no code ali encima

Compartilhar este post


Link para o post
Compartilhar em outros sites

sugiro que ao guardar no bd, faça um replace dos caracteres que interpretam o XML, dê um replace neles para armazenar no bd, e quando for usar dê outro replace para voltar ao código original.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que eu teria que fazer esse procedimento para as buscas, e não posso dar replace direto...

 

O erro foi corrigido assim:

 

 

 

Dim strNomeArquivo As String
        strNomeArquivo = MyFile.PostedFile.FileName
        Dim NomeArquivo As String = System.IO.Path.GetFileName(strNomeArquivo)
        If strNomeArquivo.Contains(".xml") Then
            Try
                'Salva no servidor
                MyFile.PostedFile.SaveAs("C:\Users\Lucas\Desktop\XML Uploader\XMLup\XMLup\upload\" + NomeArquivo)
                'Salva session
                Session("filepath") = "C:\Users\Lucas\Desktop\XML Uploader\XMLup\XMLup\upload\" + NomeArquivo


                'Banco de dados
                'Pega o Id
                Dim iduser As Integer = Session("iduser")


                'Define o caminho
                Dim path As String = Session("filepath")


                'lê o arquivo
                Dim sr As New IO.StreamReader(path)
                Dim arquivo As String = sr.ReadToEnd()


                'inserção do arquivo
                Dim com As New MySqlCommand("INSERT INTO xmldata(xmlarq,xmlpath,nomearquivo,user,dataarq, horaarq) VALUES(@xmlarq,@xmlpath,@nomearquivo,@iduser,@data,@hora)", con)
                com.Parameters.AddWithValue("@data", FormatDateTime(System.DateTime.Now, DateFormat.ShortDate).ToString)
                com.Parameters.AddWithValue("@hora", FormatDateTime(System.DateTime.Now, DateFormat.LongTime).ToString)
                com.Parameters.AddWithValue("@xmlarq", arquivo)
                com.Parameters.AddWithValue("@xmlpath", New IO.FileInfo(path).ToString())
                com.Parameters.AddWithValue("@nomearquivo", NomeArquivo)
                com.Parameters.AddWithValue("@iduser", iduser)


                con.Open()
                com.ExecuteNonQuery()
                con.Close()
                'Banco de dados Fim

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.