Схватка метатегов и комментариев с помощью пакета Agility Pack

.net c# html-agility-pack html-parsing

Вопрос

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

Я пишу простой метод, который будет извлекать любой данный тег на основе имени:

public string[] GetTagsByName(string TagName, string Source) {
    ...
}

Это можно легко сделать с помощью регулярного выражения, но мы все знаем, что использование регулярного выражения для синтаксического анализа HTML неверно. Пока у меня есть следующий код:

...
// TODO: Clear Comments (can this be done or should I use RegEx?)
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(Source);
ArrayList tags = new ArrayList();
string xpath = "//" + TagName;
foreach (HtmlTextNode node in doc.DocumentNode.SelectNodes(xpath) {
    tags.Add(node.Text);
}
return (string[])tags.ToArray(typeof(String));

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

Любая помощь приветствуется.

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

HtmlAgilityPack's HtmlDocument реализует IXpathNavigable , поэтому он использует стандартный механизм .NET XPath. Любая документация XPath 1.0 будет применима, особенно если речь идет о System.Xml.XPath.

"// comment ()" находит все комментарии
«// meta» находит все «мета» элементы

HtmlDocument был разработан так, чтобы очень похож на XmlDocument , поэтому примеры и руководства по этому вопросу будут несколько применимы.

Некоторые ссылки MSDN:



Related

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