XML CRIAR UMA TAG

CIMINOS 24/01/2017 14:26:12
#470976
Olá, preciso inserir blocos de informações neste xml em vb.net

eu estou conseguindo inserir o [Ô] <classeTerapeutica>##</classeTerapeutica>[Ô]

Dim classeTerapeutica As XmlNode = xmlDoc.CreateElement([Ô]classeTerapeutica[Ô])
classeTerapeutica.InnerText = [Ô]teste1[Ô]
node.AppendChild(classeTerapeutica)


não estou conseguindo fazer o elemento <entradaMedicamentos> <medicamentoEntrada> para fazer as chaves da forma correta

<entradaMedicamentos>
-<medicamentoEntrada>
<classeTerapeutica>##</classeTerapeutica>
<registroMSMedicamento>>##</registroMSMedicamento>
<numeroLoteMedicamento>>##</numeroLoteMedicamento>
<quantidadeMedicamento>##</quantidadeMedicamento>
<unidadeMedidaMedicamento>##</unidadeMedidaMedicamento>
</medicamentoEntrada>
</entradaMedicamentos>


----------------------------- XML INTEIRO -----

-<corpo>
-<medicamentos>
-<entradaMedicamentos>
-<medicamentoEntrada>
<classeTerapeutica>1</classeTerapeutica>
<registroMSMedicamento>1888888888888</registroMSMedicamento>
<numeroLoteMedicamento>200678</numeroLoteMedicamento>
<quantidadeMedicamento>12</quantidadeMedicamento>
<unidadeMedidaMedicamento>1</unidadeMedidaMedicamento>
</medicamentoEntrada>
</entradaMedicamentos>
-<entradaMedicamentos>
-<medicamentoEntrada>
<classeTerapeutica>1</classeTerapeutica>
<registroMSMedicamento>1888888888888</registroMSMedicamento>
<numeroLoteMedicamento>200678</numeroLoteMedicamento>
<quantidadeMedicamento>12</quantidadeMedicamento>
<unidadeMedidaMedicamento>1</unidadeMedidaMedicamento>
</medicamentoEntrada>
</entradaMedicamentos>
</medicamentos>
<insumos>
<entradaInsumos>
<insumoEntrada>
<classeTerapeutica>1</classeTerapeutica>
<codigoInsumo>00092</codigoInsumo>
<numeroLoteInsumo>A315</numeroLoteInsumo>
<insumoCNPJFornecedor>99900099900000</insumoCNPJFornecedor>
<quantidadeInsumo>300000.0</quantidadeInsumo>
<tipoUnidade>1</tipoUnidade>
</insumoEntrada>
</entradaInsumos>
</insumos>
</corpo>


obrigado !
KERPLUNK 24/01/2017 23:36:13
#470997
A velha confusão conceitual de iniciantes em XML. Apesar de XML ser um arquivo [Ô]texto[Ô], ele não é(na grande maioria dos casos) construído dessa forma. O que se faz é a serialização. Tenho um vídeo onde mostro como isso deve ser feito
CIMINOS 25/01/2017 08:53:12
#471004
Citação:

:
A velha confusão conceitual de iniciantes em XML. Apesar de XML ser um arquivo [Ô]texto[Ô], ele não é(na grande maioria dos casos) construído dessa forma. O que se faz é a serialização. Tenho um vídeo onde mostro como isso deve ser feito



Gostei muito do iniciante, ter duvidas te julga ser iniciante kkkk, acho que vc não entendeu minha duvida, mais a ideia é trabalhar com o xml dinâmico ! aonde se acrescenta apenas um bloco de informações de um xml ja construido(o bloco de produtos), desta forma que vc fez poderia pegar o resultado do banco de dados e gerar qualquer xml. sem problemas, o desafio é acrescentar sempre essa bloco de info no xml


<entradaMedicamentos>
-<medicamentoEntrada>
<classeTerapeutica>##</classeTerapeutica>
<registroMSMedicamento>>##</registroMSMedicamento>
<numeroLoteMedicamento>>##</numeroLoteMedicamento>
<quantidadeMedicamento>##</quantidadeMedicamento>
<unidadeMedidaMedicamento>##</unidadeMedidaMedicamento>
</medicamentoEntrada>
</entradaMedicamentos>

obrigado !
CIMINOS 25/01/2017 09:26:46
#471005
Citação:

:
A velha confusão conceitual de iniciantes em XML. Apesar de XML ser um arquivo [Ô]texto[Ô], ele não é(na grande maioria dos casos) construído dessa forma. O que se faz é a serialização. Tenho um vídeo onde mostro como isso deve ser feito




outra coisa essa função de seu vídeo só esta disponível no 2013 para versões anteriores tem que ser na mão mesmo !

obrigado
MARCOSLING 25/01/2017 09:38:00
#471006
Além da serialização conforme mencionado, é possível também manipular dados do xml através de dataset

seria algo como;
DataSet ds = new DataSet();
ds.ReadXml([Ô]c;\arquivo.xml[Ô]);

em seguida vc trabalha com o dataset como se fosse um banco de dados.
MARCOSLING 25/01/2017 09:51:24
#471007
Neste link mostra como manipular os dados do xml somente com classes do xml:

http://www.c-sharpcorner.com/uploadfile/vimalkandasamy/xml-a-simple-database/
ELUCIMAR 25/01/2017 13:51:31
#471029
CIMINOS

Quando o nosso colega KERPLUNK disse:
Citação:

Apesar de XML ser um arquivo [Ô]texto[Ô], ele não é(na grande maioria dos casos) construído


Ele tem toda razão, pois a maioria dos arquivos no formato XML é uma representação de algum objeto especifico.

No seu caso pelo que vi é um arquivo XML de inventario do Sngpc(Anvisa) se enquadra neste quesito.
schema Inventário Sngpc

Bom vai um exemplo da forma que você esta usando:
Dim docRoot As New XmlDocument()
Dim entradaMedicamentos As XmlElement = docRoot.CreateElement([Ô]entradaMedicamentos[Ô])

Dim medicamentoEntrada As XmlElement = docRoot.CreateElement([Ô]medicamentoEntrada[Ô])
medicamentoEntrada.AppendChild(docRoot.CreateElement([Ô]classeTerapeutica[Ô])).AppendChild(docRoot.CreateTextNode([Ô]teste1[Ô]))

entradaMedicamentos.AppendChild(medicamentoEntrada)
docRoot.AppendChild(entradaMedicamentos)


O ideal seria você popular as classes e gerar o xml como nosso colega KERPLUNK sugeriu. Exemplo:
Dim corpo As New Corpo()
corpo.Medicamentos = New Medicamentos()
corpo.Medicamentos.EntradaMedicamentos = New List(Of EntradaMedicamentos)()

Dim entradaMedicamentos As New EntradaMedicamentos()
entradaMedicamentos.MedicamentoEntrada = New MedicamentoEntrada()
entradaMedicamentos.MedicamentoEntrada.ClasseTerapeutica = [Ô]teste1[Ô]

Dim lstEntradaMedicamentos As List(Of EntradaMedicamentos) = corpo.Medicamentos.EntradaMedicamentos
lstEntradaMedicamentos.Add(entradaMedicamentos)

Dim xmlSngpc As XmlDocument = SerializeXml(corpo)


Public Shared Function SerializeXml(objectToSerialize As Object) As XmlDocument
Dim mStream As Stream = New MemoryStream()
Dim doc As New XmlDocument()
Dim writer As XmlWriter = XmlWriter.Create(mStream)
Dim serializer As New XmlSerializer(objectToSerialize.[GetType]())
serializer.Serialize(writer, objectToSerialize)

writer.Flush()
mStream.Flush()
mStream.Position = 0L
doc.Load(mStream)
Return doc
End Function

Link classe:
Sngpc.vb
Faça seu login para responder