2011-08-15 4 views
0

J'utilise la console YQL pour exécuter la requête suivante:YQL choisir parmi xml

select * 
    from xml 
    where url="http://www.inova.org/patient-and-visitor-information/facilities/inova-fair-oaks-hospital/plan-your-visit/index.jsp" 
     and itemPath="html.body.form" 

Aucun résultat sont retournés. J'ai également essayé d'employer xpath et css juste pour des grimaces, mais je n'obtiens aucun résultat. Si je supprime le deuxième filtre, j'obtiens le balisage de la page. Est-ce que je fais quelque chose de mal? C'est une page XHTML (selon le doctype), donc select * from html ne fonctionnait pas.

Merci.

MISE À JOUR

J'ai mis à jour ma syntaxe de requête à une requête qui semble au moins les résultats de retour, mais je dois plonger plus profondément. Ce que je dois vraiment arriver à quelque chose comme ceci:

select * 
    from xml 
    where url="http://www.inova.org/patient-and-visitor-information/facilities/inova-fair-oaks-hospital/plan-your-visit/index.jsp" 
     and itemPath="html.body.form.div#wrapper.div#page.div#content" 

Malheureusement, cette syntaxe pour accéder à un div id spécifique ne fonctionne pas et je n'ai trouvé aucune façon d'atteindre que div cible (celui avec id="content") qui renvoie des résultats du tout.

MISE À JOUR

J'ai trébuché, et je ne veux trébuché sur une requête YQL qui fonctionne (pour le moment, nous allons le mépris à quel point fragile est):

select * 
    from xml 
    where url="http://www.inova.org/patient-and-visitor-information/facilities/inova-fair-oaks-hospital/plan-your-visit/index.jsp" 
     and itemPath="html.body.form.div.1.div.4.div.2" 

Toutes les suggestions pour un moyen de le rendre moins fragile (et idéalement pare-balles) seraient vraiment, vraiment appréciées.

Répondre

0

Je pense que cela peut avoir à voir avec la façon dont le xhtml est écrit et non l'instruction YQL réelle.

Firefox lance cette erreur lorsque vous essayez d'accéder à la déclaration YQL directe:

XML Parsing Error: undefined entity 
Location:http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27http%3A%2F%2Fwww.inova.org%2Fpatient-and-visitor-information%2Ffacilities%2Finova-fair-oaks-hospital%2Fplan-your-visit%2Findex.jsp%27 
Line Number 307, Column 12: 

Fairfax, VA&nbsp; 22033<br/> 
-----------^ 

Si vous utilisez jQuery, vous pouvez vous déplacer avec quelque chose le long de ces lignes:

$.ajax({ 
    type : 'GET', 
    dataType : 'xml', 
    url : 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%22http%3A%2F%2Fwww.inova.org%2Fpatient-and-visitor-information%2Ffacilities%2Finova-fair-oaks-hospital%2Fplan-your-visit%2Findex.jsp%22', 
    success : function(xhtml) { 
     //find all nodes 
     $(xhtml).find('h1').each(function(){ 
      console.log($(this).html()) 
     }); 

     //target specific node 
     console.log($('#content').html()) 
    } 
}) 
+0

Vous avez raison . J'ai traversé beaucoup, beaucoup d'itérations de syntaxe et j'ai collé un qui n'était pas exactement correct. Je l'ai corrigé pour celui qui fonctionne (lire: renvoie des résultats), mais j'ai besoin de plonger quelques couches plus profondes. J'ai mis à jour ma question en conséquence. –

+0

Oh, nm. Je viens de relire votre réponse et cette fois, il a effectivement cliqué. Je vais regarder la page, mais je pense que YQL nettoie ce truc, ce qui pourrait expliquer pourquoi la requête modifiée ci-dessus fonctionne au moins à un certain niveau. –

+0

C'est essentiellement la façon de traverser la réponse JSON. Vous auriez toujours besoin d'un codage externe pour obtenir tous les nœuds h1. Même avec la nouvelle façon, le navigateur produit toujours des erreurs d'analyse XML. – RVCA18

Questions connexes