DESERIALIZAR UM ARQUIVOS XML E INSERIR EM DB

 Tópico anterior Próximo tópico Novo tópico

DESERIALIZAR UM ARQUIVOS XML E INSERIR EM DB

ASP.NET

 Compartilhe  Compartilhe  Compartilhe
#481603 - 11/05/2018 23:36:00

WCOSTA
VASSOURAS
Cadast. em:Dezembro/2003


Membro da equipe
Um salve para a galera aqui,
Como não consegui resolver a questão anterior do tópico     LER XML NODE CHILD PARA DATASET, resolvi ser mais específico e usar Deserialização do XML, mas não estou tendo êxito.
Como ler arquivos XML para que os dados possam ser inseridos em uma base de dados MySQL. O problema está em ler o XML e deserializar, uma vez que o retorn está em branco, pois a inserção no Banco de dados está tranquilo. Estou usando ASP.net como VB.net, As estrutura do arquivo é a seguinte, sendo que authors pode ter vários, assim como keywords

<records xsi:schemaLocation="http://www.doaj.org/schemas/doajArticles.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <record>
    <language>por</language>
    <publisher></publisher>
    <journalTitle></journalTitle>
    <issn></issn>
    <publicationDate>2013-04-18</publicationDate>
    <volume>6</volume>
    <issue>1</issue>
    <startPage />
    <endPage />
    <doi>00.123456/ebrasilis.v6i1.XXX</doi>
    <publisherRecordId />
    <documentType />
    <title language="por"></title>
    <title language="por" />
    <authors>
      <author>
        <name></name>
        <email />
      </author>
    </authors>
    <abstract language="por" />
    <abstract language="eng" />
    <fullTextUrl format="pdf">http://www.periodico.ebras.bio.br/ojs/index.php/ebras/article/view/ebrasilis.v6i1.XXX</fullTextUrl>
    <keywords language="por"></keywords>
    <keywords language="eng" />
  </record>
</records>

O código em VB.net é:

Imports System.Xml.Serialization

<Serializable()> _
XmlRootAttribute("records")> _
Public Class Registros
    <XmlArrayItem("author")> _
    Public Property authors As List(Of author)
    Public Property language As String
    Public Property publisher As String
    <XmlElementAttribute("journalTitle")> Public journalTitle As String
    Public Property issn As String
    Public Property publicationDate As String
    Public Property volume As String
    Public Property issue As String
    Public Property startPage As String
    Public Property endPage As String
    Public Property publisherRecordId As String
    Public Property documentType As String
    Public Property title As String
    Public Property abstract As String
    Public Property fullTextUrl As String
    Public Property doi As String
    Public Property keyword As keywords

    Public Sub New()
        authors = New List(Of author)()
    End Sub

    Public Class author
        Public Property name As String
        Public Property email As String
    End Class
    Public Class keywords
        <XmlArray("keywords")>
         <XmlArrayItem("keyword")>
        Public keyword As New List(Of String)
    End Class
End Class

Script:

Dim serializer As XmlSerializer = New XmlSerializer(GetType(Registros))
Dim deserialized As Registros
Using reader As New StreamReader(sFileXML)


            deserialized = serializer.Deserialize(reader)
            If deserialized Is Nothing Then
                DivMsg.InnerHtml = "<div class='alert alert-warning'>Objeto está Vazio</div>"
                Exit Sub
            End If
            MsgBox(deserialized.journalTitle)
'usado apenas para testar e retorna em branco assim como todas as variáveis End Using


AntSoft Systems On Demand



Resposta escolhida #481604 - 11/05/2018 23:53:04

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Tem várias opções, vou listar da melhor para a pior:
1 - Usar Entity Framework. Suas classes já estão prontas, basta fazer um contexto de dados, um migration e inserir
2 - Usar uma ORM genérico, que você pode ver como faz no meu canal e inserir os dados
3 - Criar uma tabela com um campo texto genérico e salvar o conteúdo XML em forma de texto mesmo

Mas a melhor coisa à fazer é largar VB de mão, use C# é muito mais sucinto, simples e fácil.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por WCOSTA em 29/05/2018 18:44:34