Попробуйте следующий
var names = (from dr in dataTable.Rows
select (string)dr["Name"]).Distinct().OrderBy(name => name);
, это должно работать на то, в чем Вы нуждаетесь.
Не следует использовать анализатор XML для анализа HTML. Используйте синтаксический анализатор HTML.
Обратите внимание, что следующий HTML-код является совершенно допустимым (и синтаксический анализатор XML подавился бы им):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Is this valid?</title>
</head>
<body>
<p>This is a paragraph
<table>
<tr> <td>cell 1 <td>cell 2
<tr> <td>cell 3 <td>cell 4
</table>
</body>
</html>
На CPAN есть много специфичных для задач (в дополнение к общему назначению) анализаторов HTML. Они отлично работали для меня с огромным количеством чрезвычайно беспорядочного (и в большинстве случаев недействительного) HTML.
Можно было бы дать конкретные рекомендации, если бы вы могли указать проблему, которую пытаетесь решить.
Там это также HTML :: TreeBuilder :: XPath , который использует HTML :: Parser для синтаксического анализа документа в дерево, а затем позволяет вам запрашивать его с помощью XPath. Я никогда им не пользовался, но видел HTML Scraping with XPath
Рэндала Шварца.
Учитывая HTML-файл выше, следующий короткий сценарий:
Вы можете перефразировать вопрос следующим образом:
Меня интересует синтаксический анализатор, который мог бы взять искаженную
HTML-страницуC-код и преобразовать его в правильно сформированныйИсходный код HTMLC перед выполнением некоторыхзапросов XPathкомпиляцией и связыванием с ним. Вы знаете что-нибудь?
Теперь вопрос может быть более очевидным: это будет нелегко. Если это действительно искаженный HTML, вам может потребоваться проделать работу вручную, пока он не будет загружен в анализатор HTML. Затем вы можете использовать любой из других модулей, представленных здесь, для выполнения работы. Однако маловероятно, что вы когда-нибудь сможете программно перевести необработанный HTML в строго допустимый xhtml.
Если вы не хотите узнать больше о колесах , используйте код HTML Tidy .