Pregunta

Estoy usando un XmlDocument para analizar y manipular una cadena XHTML, convirtiendo algunos nodos en nodos HTML.

¿Cuál es la mejor manera de obtener una lista de todos los nodos con un nombre de clase dado? ¿Se puede hacer con XPath?

¿Fue útil?

Solución

¿Con una clase dada? Si es solo una clase, entonces debería poder hacer algo como .SelectNodes (" // * [@ class = 'foo'] "). Si no es xhtml, entonces vale la pena mirar el Paquete de agilidad HTML .

En el cliente, jQuery sería una buena opción, y admite nombres de clase compuestos.

Si tiene varios nombres de clase en elementos individuales y necesita manejarlo en el servidor, espero que necesite encontrar primero las clases candidatas (" // * [@ class! = '']), y luego repítelos haciendo un Split () y verificando el nombre de la clase en los resultados; es decir, sepárelo manualmente.

En términos de LINQ, algo como:

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

Otros consejos

Sí, es fácil con XPath:

//*[@class='foo']
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top