Cortando String XML
Veja como é fácil cortar 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
blog.mauriciojunior.org
Subscribe ecode10.com
Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.
You can cancel anytime.
Log In