2009-11-04 4 views
0

Disons que c'est l'élément de l'emplacement: < .location> bla ... < ./location>Contrôle de vide d'un élément dans hpricot

Il peut être vide comme ceci: < .location />

Existe-t-il un moyen de détecter la barre oblique inverse dans l'élément vide afin de ne pas le renvoyer?

Répondre

1

Si ce que vous voulez vraiment le texte dans les balises de localisation, vous pouvez trouver ceux facilement avec le droit XPath:

doc.search('//location/text()') 

Si, pour une raison quelconque, vous avez besoin en fait l'élément de l'emplacement lui-même, utilisez ceci:

doc.search('//location/text()/..') 
+0

grand merci, il sera réparé de cette façon, assez. En fait, en lisant le xml de mon navigateur, il affiche en fait un <.location/>, mais hpricot vient de rouvrir le tag et de joindre le reste du doc; d'où le problème. – Ben

0

<location/> est sémantiquement identique à <location></location>, et doivent être traités comme tels. Pour trouver toutes les balises vides, il suffit d'ignorer les éléments qui n'ont pas de nœuds enfants (y compris le texte).

+0

Pour être cohérente, cette méthode flickr api est concernée: http://www.flickr.com/services/api/flickr.people.getInfo.html. Lorsque .. est vide, hpricot ce qu'elle devienne comme si elle obtenait quelque chose comme ... ... etc ..., en mots comme lieu joignait plus qu'il ne devrait être. À partir d'un navigateur, vous pouvez juste voir que flickr renvoie . Très déroutant. – Ben