XML CRIAR UMA TAG
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 !
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 !
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
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 !
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
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.
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.
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/
http://www.c-sharpcorner.com/uploadfile/vimalkandasamy/xml-a-simple-database/
CIMINOS
Quando o nosso colega KERPLUNK disse:
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
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