2017-07-20 1 views
0

J'utilise HTML agility pack pour supprimer le mauvais HTML dans les entrées de base de données. J'essaie de supprimer les noeuds en utilisant SelectSingleNode(xpath).Remove();. cela génère une erreurnombre maximum de nœuds enfants navigables avec xPath dans htm pack d'accessibilité

System.Xml.XPath.XPathException: 'La requête xpath est trop complexe.

Y at-il un nombre maximum de nœuds que vous pouvez parcourir lorsque vous utilisez xPath, ou y a-t-il une autre raison pour laquelle cette erreur se produit? J'ai réduit le nombre de nœuds dans un test et xPath a bien fonctionné, ci-dessous est le xpath qui lance cette exception. (Il est en désordre)


/p[1]/span[1]/span[1]/strong[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/strong[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/strong[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/strong[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/span[1]/b[1]/span[1]/b[1]/b[1]/span[1]/b[1]/b[1] 


Note: La raison de vouloir le faire est parce que je suis sur le bug de placement fixation. il y a des entrées html stockées dans la base de données qui ont été bourrées de html indésirable en raison d'un bug de l'éditeur rad qui a été laissé inaperçu jusqu'à ce qu'il casse l'éditeur rad lors du chargement des rapports. J'ai besoin de garder le style qui est stocké dans les balises HTML, donc je ne peux pas supprimer tout le HTML.

+0

Si vous obtenez cette erreur alors apparemment il y a un maximum .. N'y a-t-il aucun élément en cours de route ayant un identifiant que vous pouvez rechercher? .. –

+0

il est pour des milliers d'enregistrements donc je ne peux pas trouver dynamiquement tout (ou du moins je ne pense pas que je peux), j'ai écrit deux méthodes pour essayer de réduire le mauvais html, un en supprimant tous les tags faire défiler toutes les balises enfant et l'autre faire une chose similaire pour supprimer les balises du même type avec le même texte et le même style. Il a résolu le problème pour les autres mauvais enregistrements où cela se produisait mais il réduit seulement ce HTML actuel de 1500 caractères et le xpath est toujours extrêmement complexe. – Kevin

+0

le html est également un gâchis, c'est pourquoi les deux premières méthodes ne fonctionnent pas comme prévu. Je vais modifier et attacher la méthode que j'utilise pour essayer de supprimer les balises par le xpath – Kevin

Répondre

0

J'ai fait un peu plus de tests à ce sujet, il semble que je ne peux pas aller plus loin que 511 éléments. ceci est pour un XPath naviguant vers un noeud sans autres expressions que le chemin dans le xPath