Domanda

Sto usando un XmlDocument per analizzare e manipolare una stringa XHTML, convertendo alcuni nodi in nodi non HTML.

Qual è il modo migliore per ottenere un elenco di tutti i nodi con un determinato nome di classe? Può essere fatto con XPath?

È stato utile?

Soluzione

Con una determinata classe? Se è solo una classe, dovresti essere in grado di fare qualcosa come .SelectNodes (" // * [@ class = 'foo'] "). Se non è xhtml, vale la pena pacchetto di agilità HTML .

Al client, jQuery sarebbe una buona opzione e supporta nomi di classi compositi.

Se hai più nomi di classe su singoli elementi e devi gestirlo sul server, mi aspetto che potresti aver bisogno di trovare prima le classi candidate (" // * [@ class! = '']) e quindi passaci sopra facendo un Split () e controllando il nome della classe nei risultati; cioè separarlo manualmente.

In termini di LINQ, qualcosa del tipo:

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

Altri suggerimenti

Sì, è facile con XPath:

//*[@class='foo']
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top