Sélection de tous les nœuds contenant du texte avec XPath

c# html-agility-pack xpath

Question

Je me suis efforcé de résoudre ce problème que j'ai eu ces deux derniers jours. Dites, je veux obtenir tout le texte () d'un document HTML, mais je veux seulement connaître et récupérer le XPath du nœud contenant les données de texte. Exemple:

 foreach (var textNode in node.SelectNodes(".//text()")) 
 //do stuff here 

Cependant, lorsqu'il s'agit de récupérer le XPath du textNode à l'aide de textNode.XPath , je reçois le XPath complet, y compris le nœud #text :

/html[1]/body[1]/div[1]/a[1]/#text

Pourtant, je ne veux que le nœud contenant du texte, par exemple:

/html[1]/body[1]/div[1]/a[1]

Quelqu'un pourrait-il m'indiquer une meilleure solution XPath pour récupérer tous les nœuds contenant du texte, mais uniquement pour récupérer le XPath jusqu'au nœud contenant?

Réponse acceptée

Pourquoi tu ne

string[] elements = getXPath(textNode).Split(new char[1] { '/' });
return String.Join("/", elements, 0, elements.Length-2);

Réponse populaire

Au lieu de :

.//text() 

utiliser :

.//text() 

Ceci sélectionne tous les "éléments-feuilles" -décritants du nœud contextuel (actuel) qui ont au moins un enfant de nœud de texte non-blanc.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi