Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

notax

[Resolvido] Nós em XML

Recommended Posts

Pessoal, bom dia! Estou recebendo um xml em formato de string, queria saber como faça para pegar os dados que vem dentro dos nós, ex.:

 

<no1>item 1</no1><no2>item 2</no2>

 

Ou seja, se eu quiser pegar as informações dentro de no1 e jogar para dentro do banco de dados na coluna no1, como faço?

 

Não tenho como fazer isso por mid pq os resultados dentro do nós não possuem limitação de caracter... como poderia fazer isso então? alguem se habilita?

 

att

Compartilhar este post


Link para o post
Compartilhar em outros sites

tudo bem, mas daí eu teria que gerar o xml propriamente dito, gostaria de aproveitar os nós do mesmo, e como só preciso do que está dentro, criar em asp mesmo, sem uso de componentes, uma forma de resgatar os valores desses nós e jogar no bd...

 

Só não to conseguindo resgatar os valores, mas acredito ter como se fazer isso... essa é a minha dificuldade atual... será que rola um help?

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este link

Compartilhar este post


Link para o post
Compartilhar em outros sites

é simples análise primeiro essas opções que foram passada, e tendo duvidas volte a postar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só, esqueçam o fato de ser um xml, vamos pensar o seguinte:

 

Tenho uma string que está assim:

 

<?xmlversion="1.0"encoding="ISO-8859-1"?><POSITIONS><POSITION><ID>4258991</ID><DATE_TIME>2010-11-0411:04:06</DATE_TIME>

 

coo faço para pegar apenas o que está abraçado pelas tags <ID></ID>?

 

Fiz assim, mas não deu certo:

 

id_ini = InStr(str, "<ID>")

id_fini = InStr(str, "</ID>")

id= Mid(str, id_ini, id_fini)

 

O que da errado é que pega parte da data também... alguém faz ideia do pq?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas aí é que está o problema, assim eu limito o número de caracteres... no entanto o id pode ter 3, 5, 7, 9 ou 11 caracteres... e aí, como soluciona isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me mostre ONDE no código q eu te passei que existe um limitador de caracteres...

No meu exemplo... eu pego a quantidade de caracteres que existem entre o fim e o começo, ou seja, entre o <id> e </id>.. portanto, nao existe limite...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uhm... que bacana, então pelo que entendi, se a tag fosse denominada cep por exempo, o numero do caminha teria que ser 7, é isso?

 

Cara, muito bala... vou fazer aqui!

 

Valew mesmo...

 

forte abraço e brigadão!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois então, entendi isso...

 

Mas assim, agora está ocorrendo um fenomeno estranho, vamos pensar uma outra situação, imaginemos o campo verba...

 

<VERBA>-1500,00</VERBA>

 

fiz da seguinte forma:

 

verba_ini = InStr(str, "<VERBA>")
verba_fini = InStr(str, "</VERBA>")
verba_caminha = verba_fini - verba_ini
verba = Mid(str, verba_ini + 8, verba_caminha-8)

Minhas dúvidas seriam:

O que fiz acima está correto, não?

O valor como pode ver é negativo, e no banco de dados está sendo armazenado como positivo, ou seja, sem o sinal de -, onde está o meu erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O comando InStr retorna o numero da posição inicial da string que você mandou buscar, que no seu caso foi <verba>

 

Ou seja, vamos supor que o numero seja o 56... na linha verba = Mid(str, verba_ini + 8, verba_caminha-8), você está mandando ele começar a pegar o texto a partir da posição 56 + 8.. mas velho.. é só parar, ver, prestar atenção e pensar... a string <verba> tem 7, SETE, SEEEEETE caracteres, e nao 8.... ou seja, ele está começando a pegar o texto uma posição a mais do que deveria, por isso o sinal de - não está indo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

eae cara, uma função pra facilitar pra você:

 

<%
<%
function pegavalor(str,tag)
inicio = instr(str,"<"&tag&">")
fim = instr(str,"</"&tag&">")
caminha = fim-inicio
pegavalor = Mid(str, inicio + len(tag)+2, caminha-len(tag)-2)
end function

str = "asdsadsada<arroz>ola</arroz>"
response.write pegavalor(str,"arroz")
%>

Função editada - havia um erro desculpe

Compartilhar este post


Link para o post
Compartilhar em outros sites

na boa: </VERBA> tem 8 caracteres e não sete como mencionou... mesmo colocando 7 não resolveu o problema, fiz só por fazer... deve ser outra coisa... vou pesquisar aqui e assim que conseguir posto algo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao... o 5 equivale a quantidade de caracteres da string </id>... ela possui 5 caracteres...

É só olhar o código e entender.....

 

Acima, você mesmo contou a tag final, com a /, agora você conta sem a barra...

 

augustoclaro Muito boa sua função, funcionou perfeito aqui... ela é simples e 100% funcional... agradeço sua ajuda.

 

Mais uma vez agradeço a todos os que colaboraram, mesmo os que parecem ter sido obrigados a isso...

 

Tópico resolvido!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com a barra... a gente conta para determinar quantos caracteres você vai remover da variavel "caminha", para saber onde ele deve parar....

 

SEM A BARRA, como eu expliquei acima, a gente conta para saber a partir de onde a função irá começar a pegar a string....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.