Usuário com melhor resposta
Como ler o XML ?

Pergunta
-
Eu tenho um XML gigante com a estutura abaixo. Eu inseri numa tabela em um campo do tipo XML. Como faço para ler todos os pedidos ?
<Total>
<Clientes>
<Cliente>
<Codigo>7645</Codigo>
<NumeroLote>Embarque_25042012_162629.xml</NumeroLote>
<DataHoraLote>25/04/2012 16:27:17</DataHoraLote>
<Remessas>
<Remessa>
<NrRemessa />
<Pedido>1420104</Pedido>...
Por favor me ajudem. Preciso muito disso.
Guilherme Costa
Email: guilerme18@hotmail.comSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Movido Gustavo Maia Aguiar sexta-feira, 27 de abril de 2012 13:47 (De:SQL Server - Desenvolvimento Geral)
Respostas
-
Guilherme,
Apenas para complementar, você precisar usar o sp_xml_removedocument . Pois o sql server disponibiliza uma área de 2gb para tratamento de documentos XML e caso você nao execute essa SP a memoria ficará alocada.
Abraços;
Se útil, Classifique.
Dhiego Piroto - MCP | MCTS SQL Server 2008 Developer | Email: dhiegopiroto@gmail.com
- Marcado como Resposta Gustavo Maia Aguiar sexta-feira, 27 de abril de 2012 13:46
-
Solução do meu problema:
DECLARE @idoc int DECLARE @doc varchar(max) SET @doc ='<Total> <Clientes> <Cliente> <Codigo>7645</Codigo> <NumeroLote>Embarque_25042012_162629.xml</NumeroLote> <DataHoraLote>25/04/2012 16:27:17</DataHoraLote> <Remessas> <Remessa> <Pedido>1420104</Pedido> </Remessa> <Remessa> <Pedido>1419905</Pedido> </Remessa> </Remessas> <Rodape> <QtdRemessasLote>136</QtdRemessasLote> </Rodape> </Cliente> </Clientes> </Total>' -- Create an internal representation of the XML document. EXEC sp_xml_preparedocument @idoc OUTPUT, @doc -- Execute a SELECT stmt using OPENXML rowset provider. SELECT * FROM OPENXML (@idoc, '/Total/Clientes/Cliente/Remessas/Remessa',2) WITH (Pedido varchar(100) 'Pedido')
Guilherme Costa
Email: guilerme18@hotmail.comSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta Guilherme Costa - Campinas - SP quarta-feira, 25 de abril de 2012 22:44
Todas as Respostas
-
Solução do meu problema:
DECLARE @idoc int DECLARE @doc varchar(max) SET @doc ='<Total> <Clientes> <Cliente> <Codigo>7645</Codigo> <NumeroLote>Embarque_25042012_162629.xml</NumeroLote> <DataHoraLote>25/04/2012 16:27:17</DataHoraLote> <Remessas> <Remessa> <Pedido>1420104</Pedido> </Remessa> <Remessa> <Pedido>1419905</Pedido> </Remessa> </Remessas> <Rodape> <QtdRemessasLote>136</QtdRemessasLote> </Rodape> </Cliente> </Clientes> </Total>' -- Create an internal representation of the XML document. EXEC sp_xml_preparedocument @idoc OUTPUT, @doc -- Execute a SELECT stmt using OPENXML rowset provider. SELECT * FROM OPENXML (@idoc, '/Total/Clientes/Cliente/Remessas/Remessa',2) WITH (Pedido varchar(100) 'Pedido')
Guilherme Costa
Email: guilerme18@hotmail.comSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta Guilherme Costa - Campinas - SP quarta-feira, 25 de abril de 2012 22:44
-
Guilherme,
Apenas para complementar, você precisar usar o sp_xml_removedocument . Pois o sql server disponibiliza uma área de 2gb para tratamento de documentos XML e caso você nao execute essa SP a memoria ficará alocada.
Abraços;
Se útil, Classifique.
Dhiego Piroto - MCP | MCTS SQL Server 2008 Developer | Email: dhiegopiroto@gmail.com
- Marcado como Resposta Gustavo Maia Aguiar sexta-feira, 27 de abril de 2012 13:46