🔥 Apps, books, system as a service, podcast and more



Cortando String XML

        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

 

Sign up to our newsletter

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.

Top