3
I want to search for a certain element (in case name) in a document XML
, using only one input
text-type.
Code of what I’ve already got
TagXML = function() {
dados = "<doc>"
dados = dados + "<clientes>"
dados = dados + "<nome>Maria Adriana</nome>"
dados = dados + "<telefone>(11) 5555-1234</telefone>"
dados = dados + "<idade>2</idade>"
dados = dados + "</clientes>"
dados = dados + "<clientes>"
dados = dados + "<nome>Giovana Pereira</nome>"
dados = dados + "<telefone>(11) 5555-6789</telefone>"
dados = dados + "<idade>25</idade>"
dados = dados + "</clientes>"
dados = dados + "<clientes>"
dados = dados + "<nome>Ricardo Ramos</nome>"
dados = dados + "<telefone>(11) 5555-6090</telefone>"
dados = dados + "<idade>26</idade>"
dados = dados + "</clientes>"
dados = dados + "</doc>"
// Executa uma consulta XML e armazena em busca
var busca = document.getElementById('campo').value;
if (window.DOMParser) { // Demais Navegadores
parser = new DOMParser();
xmlDoc = parser.parseFromString(dados, "text/xml")
} else { // Internet Explorer
xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async = false;
xmlDoc.loadXML(dados);
}
// Armazena na var registro o conteudo de uma tag "doc"
registro = xmlDoc.getElementsByTagName("doc")[0];
// Guarda na var nome o conteudo de uma tag "nome"
nome = registro.getElementsByTagName("nome");
// Laço dentro da tag "nome" para cada tag "nome" que encontrar
for (var i in nome) {
// Verificando se houve alguma busca com sucesso
if (nome[i].firstChild.textContent == busca) {
// Exibindo os resultados encontrados
alert('existe sim');
break;
} else {
alert('não existe');
break;
}
}
}
<input type="text" value="" id="campo" />
<input type="button" value="Procurar" onclick="TagXML();" />
<pre>Ex.: Maria Adriana, Giovana Pereira ou Ricardo Ramos</pre>
The idea is to issue a alert()
whether the result exists or not.
For that I need to read the XML
and make the selection according to the index [i]
going through each element of the tag "name".
What’s going on
Problem - The three names exist within the XML
, but he only confirms the first, and annuls the rest.
The loop that should return the index position number of each "name", only returns the first index.
The
continue
is optional until. But that’s it :) Diego: take advantage and declare this lot of variable withoutvar
that you have there, because this is all leaking to the global scope and can cause you problems.– bfavaretto
Another tip, the Snippets here in the network has a great identation tool (almost every good professional editor[and most of the free inclusive] have), their codes are usually very poorly devised, this hurts when someone tries to find a solution.... even you can end up getting confused yourself
– MarceloBoni