Cortando String XML


por Mauricio Junior em 1/1/2011 0

        Olá pessoal,hoje gostaria de publicar e mostrar, apenas para registro, como funciona cortaruma string XML e retornar todos os dados de uma tag, mesmo que tenha sidorepetida.

 

Requisito:

Linguagem C#.NET

Plataforma:Windows Forms ou Web Forms

Framework: .NET3.5

Ferramenta dedesenvolvimento: Visual Studio .NET 2008

 

            Pessoal, mesmo desenvolvendo com alinguagem, ferramenta e framework acima citados, você pode colocar o método doartigo em qualquer framework ou ferramenta de desenvolvimento anterior a 2008,que vai funcionar perfeitamente.

 

Objetivo

            Qual o objetivo do artigo? Éfacilitar ao desenvolvedor cortar string em XML, e trazer apenas a tagesperada, mesmo que sejam repetidos; os dados serão trazidos e acoplados. Porexemplo: (Cod 1.1)

 

 

<principal>

   <cliente>

       <nome>teste</nome>

       <data>12/02/2009</data>

   </cliente>

   <sistema>

       <versao>1.2</versao>

       <codigo>2A</codigo>

   </sistema>

   <cliente>

       <nome>teste 2</nome>

       <data>12/02/2010</data>

   </cliente>

   

Code 1.1

 

            Caso você tenha um XML gravado nobanco de dados e em certo momento, retorna ele em tela, só que é necessárioapenas pegar a tag <cliente>, todas as tags mesmo se estiver repetida emlugares separados.

            Então, melhor usar um métodoespecífico e simples, mas que tomou um pouco de tempo no desenvolvimentocorreto.

 

Código

 

        /// <summary>

        /// Método que corta a string dinâmicamente

        /// Retorna apenas a string, se tiver mais que uma, ele já faz o loop

        /// automaticamente.

        /// </summary>

        /// <param name="result">string</param>

        /// <param name="tagInicio">strnig</param>

        /// <param name="tagFim">string</param>

        /// <returns>String</returns>

        private String CortarString(string result, string tagInicio, string tagFim)

        {

            //retorna essa variavel final

            string resultadoFinal = "";

 

            int posicaoinicio = result.IndexOf(tagInicio);

            int posicaofim = result.IndexOf(tagFim);

 

            if (posicaoinicio > -1 && posicaofim > -1)

            {

                posicaofim += tagFim.Length;

 

                if (posicaoinicio > posicaofim)

                    posicaofim = posicaoinicio - posicaofim;

                else

                    posicaofim = posicaofim - posicaoinicio;

 

                string resultado = result.Substring(posicaoinicio, posicaofim);

                resultadoFinal += resultado;

 

                //corta a tag

                result = result.Replace(resultado, "");

 

                //se tiver a tag ele busca novamente chamando o método

                if (result.IndexOf(tagInicio) > 0)

                    resultadoFinal += CortarString(result, tagInicio, tagFim);

            }

            else

                resultadoFinal = "";

 

            return resultadoFinal;

        }

Code 1.2

 

            No [Code 1.2] mostro o método quecorta string XML corretamente. Pra isso basta enviar a string toda e a taginicial e tag final. Code 1.3

 

 

String resultadoFinal = CortarString(string result, string tagInicio, string tagFim)

 

Code 1.3

 

            Comofalado no exemplo [Code 1.1], imagine que eu queira cortar a tag chamada <cliente>. Para isso, armazenotodo o meu retorno em uma variável string e passo para o método e as tags quepreciso dos dados. Code 1.4

 

 

String result = string resultado = "<NomeDocumentos112><Tamanho>097</Tamanho><TipoRegistro>112</TipoRegistro><Nome>teste</Nome><DataNascimento>00000000</DataNascimento><CPF>12345678900</CPF><RG>123456</RG><OutroDocumento>1</OutroDocumento></NomeDocumentos112><ConsultasAnteriores125><Tamanho>064</Tamanho><TipoRegistro>125</TipoRegistro><TipoCredito>CH</TipoCredito><DataCredito>24022010</DataCredito><Moeda/><Valor>00000000000</Valor><Informante>CODIGODETESTE</Informante></ConsultasAnteriores125><Cliente><Tamanho>104</Tamanho><TipoRegistro>211</TipoRegistro><TipoOcorrencia>1</TipoOcorrencia><TipoDocumento>1</TipoDocumento><NumeroDocumento>00000012413895</NumeroDocumento><Banco>237</Banco><Agencia>0099</Agencia><ContaCorrente>104</ContaCorrente><Cheque>211</Cheque><Alinea>21</Alinea><DataOcorrencia>12082009</DataOcorrencia><DataDisponibilizacao>25082009</DataDisponibilizacao><Informante>CASABAHIACOMERCIALLTDA</Informante><Indicador>4</Indicador></Cliente><Cliente><Tamanho>104</Tamanho><TipoRegistro>211</TipoRegistro><TipoOcorrencia>1</TipoOcorrencia><TipoDocumento>1</TipoDocumento><NumeroDocumento>00000901064823</NumeroDocumento><Banco>237</Banco><Agencia>0099</Agencia><ContaCorrente>104</ContaCorrente><Cheque>211</Cheque><Alinea>28</Alinea><DataOcorrencia>01012006</DataOcorrencia><DataDisponibilizacao>08082006</DataDisponibilizacao><Informante>RJ-MTIEMPRESADETESTEDOUNPJCADAS</Informante><Indicador>4</Indicador></Cliente>";

 

String resultadoFinal = CortarString(string result, “<cliente>”, “</cliente>”)

 

Code 1.5

 

            Oresultado final será todo o conjunto de dados dentro da tag <cliente> doseu xml armazenada em sua variável resultadoFinal.Funciona perfeitamente para quem gostaria de cortar arquivo XML.

            Bom, eu fico por aqui e qualquerdúvida, pode entrar em contato pelo site.

 

Mauricio Junior

www.mauriciojunior.org

blog.mauriciojunior.org

 

voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Permitir Teste pelo Browser no WebService
II Encontro .NET em Brasília
DateDiff com intervalos escolhidos por você
Web 2.0 - A máquina somos nós
MinimizeBox no Celular
Vídeo: Série Atlas.NET - Parte I
Clique ENTER usando C#.NET
Channel9 - Soap, OData, Json
Criando e Lendo Cookie
Perguntas Mais Freqüentes de ASP.NET
Como fazer uma enquete - parte 1
XAML Power Toys
Utilizando ASP:Menu
M-Payment com Google Wallet
Usando Themes ASP.NET 2.0 (Parte 2)
Visual Studio 11 – Novas funcionalidades e melhorias parte 3
Trabalhando com Cookie usando Visual Studio.NET 2005 (parte I)
Criptografando URL
TreeView usando Banco de Dados
Propaganda Microsoft - Vemos como será e não como é.
Web abrindo aplicações locais
Novo Firefox 3.0 - o chamado Minefield
Criando Teclas de Atalho no Windows Form
Ebook: Desenvolvendo WebServices
Criando Alias no Pacote
Enviado email anexado
Criando uma aplicação de uma maneira nova para melhor publicação
SQLEngine Utilizando Upgrade
Descobrindo e criando tecla de atalho com Windows Forms
A mágica do ResolveURL
Trabalhando bem com o “using”
Mais um Windows Phone 7
DataGrid Mobile
Multimídia C#.NET
Vídeos para download