I want to do a search for a given element (in the name case) in a XML
document, using only a input
of type text.
Code of what I've already achieved
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()
indicating whether the result exists or not.
For this I need to read the XML
and make the selection according to the index [i]
by going through each element of the tag "name".
What's happening
Problem-ThethreenamesexistwithinXML
,butitonlyconfirmsthefirst,andoverridestherest.
Theloopthatshouldreturntheindexpositionnumberofeach"name" only returns the first index.