Skip to content

Instantly share code, notes, and snippets.

@lemire
Created April 18, 2016 15:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lemire/a5b7f3372f206a1410ceb107f89ffa95 to your computer and use it in GitHub Desktop.
Save lemire/a5b7f3372f206a1410ceb107f89ffa95 to your computer and use it in GitHub Desktop.
Cherchons un numéro de téléphone avec XPath
<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