¿Cómo obtener todas las etiquetas HTML que contienen una cadena específica en sus valores de atributos usando Html Agility Pack?

c# html html-agility-pack

Pregunta

Estoy trabajando para obtener todas las etiquetas HTML que contienen una cadena específica en sus valores de atributo en el siguiente código

<meta name="DCSext.oo_market" content="en-us">
<a href="http://office.microsoft.com/en-us/support/" title="Find help for Word">
<a href="http://windows.microsoft.com/en-us/windows-live/microsoft-account-help#microsoft-account=tab1" title="Microsoft Account">

Quiero que todas las etiquetas que contengan "en-us" en su atributo signifiquen que mi salida debería devolver todas las etiquetas html anteriores. ¿Podría alguien ayudarme, por favor, a obtenerlo usando HTML Agility Pack?

Respuesta aceptada

Puede usar el siguiente XPath //*[@*[contains(., 'en-us')]] que selecciona cualquier elemento que tenga algún atributo que contenga una cadena en-us :

HtmlDocument doc = new HtmlDocument();
doc.Load(path_to_html_file);    
var nodes = doc.DocumentNode.SelectNodes("//*[@*[contains(., 'en-us')]]");

O forma LINQ:

var nodes = doc.DocumentNode.Descendants()
               .Where(n => n.Attributes.Any(a => a.Value.Contains("en-us")));


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué