Question

J'utilise un document XmlDocument pour analyser et manipuler une chaîne XHTML, en convertissant certains nœuds en nœuds non HTML.

Quel est le meilleur moyen d’obtenir une liste de tous les nœuds avec un nom de classe donné? Peut-on le faire avec XPath?

Était-ce utile?

La solution

Avec une classe donnée? S'il ne s'agit que d'une classe, vous devriez pouvoir faire quelque chose comme .SelectNodes ("// * [@ class = 'foo']"). S'il ne s'agit pas de xhtml, le pack d'agilité HTML mérite d'être visionné.

Sur le client, jQuery serait une bonne option et prend en charge les noms de classes composites.

Si vous avez plusieurs noms de classe sur des éléments individuels et que vous devez les gérer sur le serveur, vous devez peut-être d'abord rechercher les classes candidates (" // * [@ class! = '']), et passez ensuite sur eux en faisant un Split () et en vérifiant le nom de la classe dans les résultats; c'est à dire le séparer manuellement.

En termes LINQ, quelque chose comme:

        var qry = from XmlElement el in d.SelectNodes("//*[@class!='']")
                  let classes = el.GetAttribute("class").Split(new[] {' '},
                          StringSplitOptions.RemoveEmptyEntries)
                  where classes.Contains("foo")
                  select el;

Autres conseils

Oui, c'est facile avec XPath:

//*[@class='foo']
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top