Ir para conteúdo

POWERED BY:

Arquivado

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

x55

[Resolvido] Concatenação entre doi Xml - XmlDom + Asp

Recommended Posts

Pessoal bom dia, estou com um grande problema em fazer uma concatenação entre dois xml, eu preciso juntar os dois em um unico.

 

Na vdd vai retornar do banco de dado MainFrame N blocos xml, porém vou ter que ficar fazendo um loop até juntar todos em apenas um.

 

Ex de como um xml vai vir do banco:

<DADOS-NEGOCIO>
 <LISTA-DADOS>
    <DADO>1</DADO>
    <DADO>2</DADO>
 </LISTA-DADOS>
</DADOS-NEGOCIO>

 

O segundo xml vai retornar no mesmo padrão, porém vou ter que juntar todos em uma unica LISTA-DADOS

Exemplo do terceiro xml:

<DADOS-NEGOCIO>
 <LISTA-DADOS>
    <DADO>3</DADO>
 </LISTA-DADOS>
</DADOS-NEGOCIO>

 

Resultado final:

<DADOS-NEGOCIO>
 <LISTA-DADOS>
    <DADO>1</DADO>
    <DADO>2</DADO>
    <DADO>3</DADO>
 </LISTA-DADOS>
</DADOS-NEGOCIO>

 

 

Eu consigo chegar na Tag LISTA-DADOS para começar a ler cada Tag DADO que tenha dentro da lista, porém nao consigo ADD cada TAG dentro da LISTA-DADOS do xml.

Eu estou tentando fazer exatamente isso para adicionar um filho dentro de xml:

 

 xml.documentElement.selectNodes("/DADOS-NEGOCIO/LISTA-DADOS").appendChild node

 

Meu código ASP esta assim:

Dim xml
Dim xmlAux
Dim strXml
Dim strXmlAux

strXml = "<DADOS-NEGOCIO>" _
 	& "<LISTA-DADOS>"_
 	& "<DADO>1</DADO>"_
 	& "<DADO>2</DADO>"_
 	& "</LISTA-DADOS>"_
 	& "</DADOS-NEGOCIO>"

strXml = "<DADOS-NEGOCIO>" _
 	& "<LISTA-DADOS>"_
 	& "<DADO>3</DADO>"_
 	& "</LISTA-DADOS>"_
 	& "</DADOS-NEGOCIO>"

set xml = Server.CreateObject("Microsoft.XMLDom")
set xmlAux = Server.CreateObject("Microsoft.XMLDom")

xml.async = false
xmlAux.async = false

xml.LoadXML(strXml)
xmlAux.LoadXML(strXmlAux)

Dim objNodeList
Dim node

set objNodeList = xmlAux.documentElement.selectNodes("/DADOS-NEGOCIO/LISTA-DADOS")


For Each node in objNodeList
'response.write node.text & "<br />"
       xml.documentElement.selectNodes("/DADOS-NEGOCIO/LISTA-DADOS").appendChild node
Next

 

Muito obrigado e fico no aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Venho apenas comunicar que consegui fazer, vou deixar o código abaixo para que se por ventura alguem precisar fazer o mesmo:

 

<html>
   <body>
       <%
           On Error Resume Next

           Dim objXml
           Dim strXml
           Dim strXmlAux

           strXml = "<DADOS>" _
                   &   "<LISTA>"_
                   &       "<COMPRA>"_
                   &           "<MACARRAO>--12345</MACARRAO>"_
                   &           "<ALFACE>123</ALFACE>"_
                   &           "<AZEITONA>12</AZEITONA>"_
                   &       "</COMPRA>"_
                   &   "</LISTA>"_
                   & "</DADOS>"

           strXmlAux = "<DADOS>" _
                       &   "<LISTA>" _
                       &       "<COMPRA>" _
                       &           "<MACARRAO>++987654</MACARRAO>" _
                       &           "<ALFACE>963</ALFACE>" _
                       &           "<AZEITONA>41</AZEITONA>" _
                       &       "</COMPRA>" _
                       &   "</LISTA>" _
                       & "</DADOS>"

           set objXml = Server.CreateObject("Microsoft.XMLDOM")
           set objXmlAux = Server.CreateObject("Microsoft.XMLDOM")           

           objXml.async = false
           objXmlAux.async = false

           objXml.LoadXML(strXml)
           objXmlAux.LoadXML(strXmlAux)

           If Err.number <> 0 Then
               Response.Write("Após o Load: " & Err.number & " - " & Err.Description)
               Response.End
           End if

           Dim objNodeList
           Dim objNode
           Dim objNodeListAux

           set objNodeList = objXml.documentElement.selectSingleNode("/DADOS/LISTA") 'Seleciona apenas o nó Lista
           set objNodeListAux = objXmlAux.documentElement.selectNodes("/DADOS/LISTA/COMPRA") 'Seleciona todos os nós COMPRA

           If Err.number <> 0 Then
               Response.Write("Node: " & Err.number & " - " & Err.Description)
               Response.End
           End if

           'Para cada nó dentro da lista objNodeListAux
           For Each objNode In objNodeListAux
               'Adiciona no objXml
               objNodeList.appendChild objNode
           Next

           objXml.save("C:\\xml\testeListaCompras.xml")

           If Err.number <> 0 Then
               Response.Write("Apos o For Each: " & Err.number & " - " & Err.Description)
               Response.End
           End if
       %>
   </body>
</html>

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.