expression xpath pour supprimer l'espace
J'ai ce code HTML:
<tr class="even expanded first>
<td class="score-time status">
<a href="/matches/2012/08/02/europe/uefa-cup/">
16 : 00
</a>
</td>
</tr>
Je veux extraire le (16 : 00) chaîne de caractères sans les espaces. Est-ce possible?
- À l'aide de la mise en œuvre qu' - PHP, ou quoi? XPath est concerné par la récupération de nœuds, pas de chaîne de manutention. Toute suppression d'espaces devra être effectué séparément après la récupération.
- je pense qu'il y a une expression pour obtenir le texte de votre choix sans espaces
- Si nous parlons de php (que j'ai en quelque sorte pris en considération depuis qu'il est à propos de html), vous pouvez définir preseveWhiteSpace à faux sur vous objet DOMDocument, entraînant la suppression automatique de la redondance de l'espace blanc. php.net/manual/de/...
- Comme je l'ai dit, XPath n'est pas une chaîne de mécanisme de gestion; il ne peut pas supprimer les espaces. Il est intéressé uniquement à la récupération de données. Tout ce que vous voulez faire POUR que les données doivent être faits séparément, et, actuellement, nous ne savons pas quelle est la langue que vous utilisez pour faire dans la.
- l'affirmation absolue sur la chaîne des capacités de gestion de XPath est avéré faux -- par ma réponse. 🙂
- Il n'est pas nécessaire d'utiliser tout supplément de fonctions de PHP, comme
trim()
-- la chaîne peut être produite par l'évaluation d'un seul, court de l'expression XPath.
Vous devez vous connecter pour publier un commentaire.
Obtenir le contenu intérieur des balises avec un xpath-expressen, puis utilisez trim() (en supposant que vous êtes à l'aide de php) ou l'équivalent de la fonction pour découper les espaces au début ou à la fin.
I. Utiliser cette expression XPath:
Explication:
normalize-space()
produit une nouvelle chaîne de son argumentation, dans laquelle une tête ou en queue d'espace blanc (espace, tabulation, NL ou caractères CR) est supprimé et l'intermédiaire d'espace blanc est remplacé par un seul caractère espace.translate()
prend le résultat produit parnormalize-space()
et produit une nouvelle chaîne dans laquelle chacun des autres espaces intermédiaires, est remplacé par la chaîne vide.II. Sinon:
S'il vous plaît essayer la ci-dessous expression xpath :
vous pouvez vérifier si le texte() les nœuds sont vides.
/chemin/text()[not(.=")]
il peut être utile avec les axes comme suit-sibling:: si ce ne sont pas des contenants, ou avec child::.
NOTE: certains commentaires disent que xpath ne peut pas faire de manipulation de chaîne... même si ce n'est pas vraiment conçu pour que vous puissiez faire des choses de base: contains(), starts-with(), replace().
si vous voulez vérifier les espaces noeuds, il est beaucoup plus difficile, comme vous aurez généralement une nodelist ensemble de résultats, et la plupart des fonctions xpath, comme match ou de remplacer, de n'exploiter qu'un seul nœud.
De sorte que vous pouvez utiliser xpath pour récupérer un conteneur, ou d'une liste de nœuds de texte, et de les traiter ensuite avec une autre langue. (java, php, python, perl par exemple).
Je suis tombé sur ce thread quand j'ai eu ma propre question similaire à ci-dessus.
HTML
XPath
Cependant cette attrapé aléatoire espaces et m'a donné la sortie de:
À l'aide de normaliser l'espace, elle a enlevé le premier espace vide nœud et qui m'a laissé tout ce que je voulais
Que je ne puis saisir le premier élément de la liste, et un strip() pour supprimer tous les autres espaces
Qui m'a laissé avec exactement ce que j'ai requis: