LAYERDEV

 Busca Online:
 

Seja bem vindo(a) Visitante, você não está logado deseja logar
na comunidade ASPNETi.COM e participar de serviços e promoções ? clique aqui.

Cortando String XML



Data Publicação: 9/3/2010 9:14:14
Total de visualizações: 514

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


        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

 



Total de visualizações: 514
voltar   comente  subir


Comentários:


Comente (dê sua opinião): VOCÊ PRECISA LOGAR

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

Mais um certificado Microsoft
Vídeo: Série Atlas.NET - Parte II
SQL Dinâmico Compilado
Usando o Flash para Desenvolver Game no Microsoft XNA Developer
Trabalhando com LinkButton dentro do Gridview
Trabalhando com Cookie usando Visual Studio.NET 2005 (parte I)
Validator no VS 2005
ASP.NET 2.0 - FileUpload
Convertendo String para Guid
Gerando Relatório e Exportando para o Excel Com Visual Studio.Net 2005
Vídeo Microsoft Visual SourceSafe Parte III 3/3
Detectando ENTER
Retirar Tag HTML dos campos utilizando expressão
Fazer Log, precisa ou não precisa?
Sistema de Login em ASP – Parte X
Desenvolvendo com Atributos (Javascript) e StringBuilder
Nem tudo é o que parece!
Criando Email Modelo no Mail - MacBook
Internet Explorer 9
Criptografia de String de Conexão no Web.Config
Windows Embedded Compact 7
SQLEngine Utilizando Upgrade
Dll Ajax
Virtual Earth – Primeiro Passo
e-Book gratuito Microsoft Office 2010
Sistema de Login em ASP – Parte 10
Criando Teclas de Atalho no Windows Form
Novo SO Palm, depois da venda...
Pegando dados do computador facilmente via software
Criando Alias no Pacote
Visual Studio 2010 Beta 2
Projeto Natal é mostrado para a mídia
Artigo Criando RSS Xml para o Seu Próprio Site
Win the 7
Seria o novo Windows Mobile 7 ?
Sobre o Autor
  [sumir] [aparecer]
 
Mauricio Junior Maurício Júnior
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 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.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.orgSite pessoal  www.mauriciojunior.org

Informações Online
Usuários Online: 1514
Artigos:  729
Vídeos:  59
PodCast's:  42
Fórum:  3127
Empregos:  1359
Usuários Cadastrados: 6080
Publicidade
LAYERDEV




Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC