Как получить все теги HTML, содержащие определенную строку в их значениях атрибутов, используя Html Agility Pack?

c# html html-agility-pack

Вопрос

Я работаю над тем, чтобы получить все теги HTML, содержащие определенную строку в значениях атрибута в приведенном ниже коде

<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">

Я хочу, чтобы все теги, содержащие «en-us» в их атрибуте, означают, что мой вывод должен возвращать все вышеперечисленные html-теги. Может кто-нибудь, пожалуйста, помогите мне, как получить его с помощью пакета Agility Pack?

Принятый ответ

Вы можете использовать следующий XPath //*[@*[contains(., 'en-us')]] который выбирает любые элементы, которые имеют любой атрибут, который содержит строку en-us :

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

Или способ LINQ:

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


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow