Created
April 18, 2016 15:30
-
-
Save lemire/a5b7f3372f206a1410ceb107f89ffa95 to your computer and use it in GitHub Desktop.
Cherchons un numéro de téléphone avec XPath
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<header> | |
<script id="telephone" type="application/xml"> | |
<annuaire> | |
<individu><nom>Jean</nom><telephone>456-4321</telephone></individu> | |
<individu><nom>Pierre</nom><telephone>456-4221</telephone></individu> | |
<individu><nom>Jacques</nom><telephone>553-4221</telephone></individu> | |
<individu><nom>Marie</nom><telephone>456-4211</telephone></individu> | |
</annuaire> | |
</script> | |
<script> | |
// charge le document XML | |
function chargeXML() { | |
var monxml = document.getElementById("telephone").textContent; | |
return new DOMParser().parseFromString(monxml, "application/xml"); | |
} | |
// cette fonction exécute une expression XPath et offre | |
// un tableau comprenant les résultats. Si aucun résultat | |
// est trouvé, un tableau de longueur 0 est retourné. | |
function executeXPath(doc,path) { | |
var snapshot = doc.evaluate(path, doc, null, 7, null); | |
var nodes = []; | |
for (var i = 0; i < snapshot.snapshotLength; i++) { | |
nodes.push(snapshot.snapshotItem(i)); | |
} | |
return nodes; | |
} | |
// notre principale fonction | |
function trouveTelephone() { | |
var nom = document.getElementById('champ').value; | |
var doc = chargeXML(); | |
var monexpr = '...'; | |
var wheretowrite = document.getElementById('sol'); | |
var n = executeXPath(doc,monexpr); | |
var i; | |
var numeros = 0; | |
var mout = '<ol>'; | |
for(i = 0; i < n.length; ++i) { | |
mout += '<li>'; | |
if(n[i].textContent !== undefined) | |
mout += n[i].textContent; | |
numeros = numeros + 1 | |
mout += '</li>'; | |
} | |
mout += '</ol>'; | |
if(numeros == 0) { | |
wheretowrite.innerHTML = 'je ne trouve rien pour '+nom; | |
} else { | |
wheretowrite.innerHTML = mout; | |
} | |
} | |
</script> | |
</header> | |
<body> | |
<form> | |
<input type="field" id="champ" value="Jean" /> | |
<input type="button" value="cherche" | |
onclick="try{trouveTelephone();}catch(err) {alert(err.message);}" /> | |
</form> | |
<p id="sol" style="width:300px;background:#ccc"> Tapez un nom et appuyez sur le bouton. </p> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment