В C #, как получить уникальный список всех тегов, используя HTML Agility Pack - PullRequest
0 голосов
/ 19 января 2019

Как я могу получить уникальный список всех тегов из строки HTML. Но я могу извлечь теги один за другим.

код

public static void HtmlParser()
{
    string html = @"<TD >
    <DIV align=right>Name :<B> </B></DIV></TD>
    <TD width=""50%"">
        <INPUT class=box value=John maxLength=16 size=16 name=user_name>
    </TD>
    <TR vAlign=center> <code> This is a <kwd>vba</kwd> code piece</code>  Hi I am sujoy";

    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.LoadHtml(html);
    string code = htmlDoc.DocumentNode.
    .SelectSingleNode("//code").InnerHtml;
    string TD = htmlDoc.DocumentNode
    .SelectSingleNode("//TD").InnerText;
}

Для приведенного выше кода я хочу, чтобы вывод был list из {"DIV","TD","TR","CODE"}

Ответы [ 2 ]

0 голосов
/ 20 января 2019

Использовать htmlDoc.DocumentNode.Descendants() и для уникального списка использовать HashSet:

public static void HtmlParser()
{
    HtmlDocument htmlDoc = new HtmlDocument();
    htmlDoc.LoadHtml("Your html string containing tags like <div></div>...");
    HashSet<string> hs = new HashSet<string>();
    foreach(var dec in htmlDoc.DocumentNode.Descendants())
    {
        hs.Add (dec.Name);
    }
}
0 голосов
/ 19 января 2019

Не совсем точно, что вы подразумеваете под "уникальным списком всех тегов из строки html".

Если вы хотите, чтобы каждый элемент в документе HTML, использовал:

htmlDoc.DocumentNode.Descendants();

Если вы хотите получить список всех тегов <code>, один из способов добиться этого - использовать LINQ:

htmlDoc.DocumentNode.Descendants().Where(d => d.Name == "code");

Edit:

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

htmlDoc.DocumentNode.Descendants().Where(d => !d.Name.StartsWith("#")).Select(d => d.Name).GroupBy(d => d).Select(g => g.Key)

Это использует LINQ для выполнения следующих шагов:

  1. Удалить потомков, начинающихся с '#' (комментарии, текст и т. Д.), Оставив только теги.
  2. Выберите только имена тегов (так что вы получите их в виде строк, как требуется)
  3. Группировка по имени тега (поэтому вы получите только один из них)
  4. Выберите ключи (уникальные имена тегов)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...