Maison > interface Web > js tutoriel > Existe-t-il un équivalent getElementsByTagName() pour récupérer tous les TextNodes dans un document ?

Existe-t-il un équivalent getElementsByTagName() pour récupérer tous les TextNodes dans un document ?

DDD
Libérer: 2024-11-25 08:51:11
original
282 Les gens l'ont consulté

Is There a getElementsByTagName() Equivalent for Retrieving All TextNodes in a Document?

getElementsByTagName() Équivalent pour TextNodes

Question :

Existe-t-il une méthode similaire à getElementsByTagName() qui récupère une collection de tous les textNodes dans un document ?

Discussion :

getElementsByTagName() peut rassembler efficacement des éléments, mais il ne s'étend pas aux textNodes. Bien que traverser le DOM soit une option viable, cette question explore la possibilité d'une solution native basée sur un navigateur.

Réponse :

Il n'existe actuellement aucun équivalent direct à getElementsByTagName () pour les nœuds de texte. Cependant, il existe plusieurs méthodes alternatives :

  1. TreeWalker : L'utilisation d'un TreeWalker vous permet de naviguer de manière itérative dans l'arborescence du document et d'extraire sélectivement les nœuds de texte.
  2. Traversée itérative personnalisée : Cette méthode consiste à commencer par le corps du document et à parcourir chaque nœud enfant, en poussant les nœuds de texte à un tableau.
  3. Parcours récursif personnalisé : Semblable à l'approche itérative, mais utilise une fonction récursive pour parcourir l'arbre plus profondément avant de revenir.
  4. Requête XPath : À l'aide d'une requête XPath, vous pouvez sélectionner tous les nœuds de texte dans le document.
  5. querySelectorAll : Bien qu'il ne soit pas directement ciblé sur les nœuds de texte, ce sélecteur peut renvoyer tous les éléments, y compris ceux contenant un premier nœud de texte enfant.
  6. getElementsByTagName : Bien qu'il ne s'agisse pas d'une correspondance parfaite, il renverra des éléments qui contiennent généralement un nœud de texte enfant (par exemple, p).

Tests de performances :

Les tests de performances révèlent que TreeWalker fonctionne aussi bien, sinon mieux, que getElementsByTagName( ). Le parcours itératif personnalisé affiche également de bonnes performances. Alors que XPath et querySelectorAll donnent des résultats satisfaisants, Recursive Traversal est à la traîne en raison de sa récursion plus profonde.

Informations supplémentaires :

Même s'il existait une méthode native de collecte de nœuds de texte, vous devrez toujours parcourir et extraire le contenu textuel réel de chaque nœud. Par conséquent, le goulot d'étranglement des performances ne réside pas seulement dans l'itération sur les nœuds de texte, mais également dans l'examen des nœuds non textuels pour déterminer leur type.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal