Usuário com melhor resposta
Obter valores de uma string

Pergunta
-
Bom dia,
Estou desenvolvendo um aplicativo que recebe uma string de um aplicativo servidor onde este contem N arquivos XML dentro. Ou seja, transfere via socket um conjunto de arquivos XML em forma de string.
O que estou precisando e não estou conseguindo fazer e nem encontrar na internet, é como obter o conteudo entre as tags <?xml version="1.0" ?> e </TeleEvento>, onde a <?xml version="1.0" ?> é a primeira tag abrindo o XML e a </TeleEvento> é a ultima tag, fechando assim um arquivo XML e posteriormente outro é aberto.
Lembrando que os dados vem todos junto na mesma string, ou seja, pode haver 10 arquivos XML dentro da string e tenho que separar cada um deles, criando 10 arquivos XML distintos.
Respostas
-
amigo,
verifica se o seu método que faz a recepção do buffer do server, está tratando caso o tamanho do arquivo seja maior que o tamanho da sua taxa de transferência para download, se for, você vai ter que fazer o tratamento para ele ir concatenando as strings baixadas... entende ?
procure sobre CRC
http://www.macoratti.net/12/01/c_crc1.htm
que é onde define se a string está correta!
abraços !
- Marcado como Resposta Bruno (Sylis) quarta-feira, 8 de maio de 2013 16:56
Todas as Respostas
-
Olá Bruno
um jeito simples de pegar o valor é via expressão regular
''' <summary> ''' Retorna o Valor de uma Tag ''' </summary> ''' <param name="xml"></param> ''' <param name="tag"></param> ''' <returns></returns> Public Shared Function GetValueTag(Xml As String, Tag As String) As String Dim _Regex As New Regex("<" & Tag & "\b[^>]*>(.*?)</" & Tag & ">") Dim vl As Match = _Regex.Match(Xml) Return vl.Value.Replace("</" & Tag & ">", String.Empty).Replace("<" & Tag & ">", String.Empty).Trim() End Function
ou um link do macoratti para ler xml
http://www.macoratti.net/10/08/vbn_xml1.htm
Abraços Amigo !
-
-
-
Até funcionou, porém ele agrupou todos os valores, porém o que eu preciso seria o seguinte.
<xml>
primeiro arquivo
</xml>
<xml>
segundo arquivo
</xml>
<xml>
terceiro arquivo
</xml>
<xml>
N arquivo
</xml>Com o código que você me passou, ele junta todos os dados que estão entre as tag e como as tags são as mesmas, ele junta tudo.
Não sei se tem algum jeito de fazer assim, pega o conteudo que esta entre as primeiras tag <xml> </xml> copia e apaga. Ai executo de novo em um loop, ai ele pega de novo o primeiro <xml> </xml> que no caso do documento inteiro é o segundo mas como já foi recortado anteriormente, ai ele é o primeiro.
Não sei se você conseguiu entender.
-
que tal um split por </xml>
ai ele vai formar um vetor com seus arquivos xml e apartir dai, você faz um for no seu vetor usando o método ali e pegar as tags dos xmls independentemente.. saco ?
String[] VariosXmls...
não sei se te ajuda... pelo que entendi acho que resolve... algo próximo disso, talvez re-colocar o </xml> no final de cada item das String, caso remover...
entende ?
-
Vo tentar aqui o que você falou.
- Sugerido como Resposta Afonso Fernandes quarta-feira, 27 de fevereiro de 2013 20:07
- Não Sugerido como Resposta Afonso Fernandes quarta-feira, 27 de fevereiro de 2013 20:07
-
-
Bom dia Afonso,
Realizei aqui o comando e fiz alguns testes.
Porém a string não está vindo completa. Não sei se na recepção dos dados está cortando, mas o tamanho do buffer coloquei 65536 e também não sei se é a String.
Saberia o que pode estar ocorrendo?
-
amigo,
verifica se o seu método que faz a recepção do buffer do server, está tratando caso o tamanho do arquivo seja maior que o tamanho da sua taxa de transferência para download, se for, você vai ter que fazer o tratamento para ele ir concatenando as strings baixadas... entende ?
procure sobre CRC
http://www.macoratti.net/12/01/c_crc1.htm
que é onde define se a string está correta!
abraços !
- Marcado como Resposta Bruno (Sylis) quarta-feira, 8 de maio de 2013 16:56