Подсчитать все узлы в файле HTML - PullRequest
0 голосов
/ 06 ноября 2011

Существует ли простой способ подсчета узлов в файле HTML?Мне также нужно подсчитать узлы определенного типа, такие как div и т. Д.

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

Есть ли способ сделать это из C #?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 06 ноября 2011

С API LinqToXml вы можете легко анализировать и проходить по всем узлам HTML-документа. Вы можете найти полезные статьи, связанные с LinqToXml, но все в контексте анализа XML-документов.

Ниже приведен аналогичный поток из StackOverflow: C # Существует ли LINQ to HTML или какой-либо другой хороший API-интерфейс для манипуляции .Net HTML?

0 голосов
/ 06 ноября 2011

в первую очередь.Вы уверены, что решение на стороне клиента, использующее JavaScript, не соответствует вашим потребностям?потому что самый простой способ подсчета узлов в HTML-документе - это использование jQuery в клиентском браузере.

<script src="http://code.jquery.com/jquery-1.7.min.js"></script>
<script>
    $('html').children() // will give you all child elements of the html element
    $('body').children() // same for body element
    $('body').children('div') // will give you just the direct children elements of 'div' type
    $('body').find('div') // will give you all the nested elements of 'div' type
</script>

если вы не знакомы с jQuery, взгляните на www.jquery.com

если вам все еще нужно решение C # для синтаксического анализа документа на стороне сервера, то я бы рекомендовал использовать HTMLAgilityPack (даже если вы этого не хотите).написание собственного синтаксического анализатора кажется мне пустой тратой времени, так как вам нужно учитывать искаженный html / xml и тому подобное, что может быть проблемой.

попробуйте использовать эту статью с переполнением s: лучший способ разобрать HTML в C #?

надеюсь, что он удовлетворит ваши потребности

0 голосов
/ 06 ноября 2011

Если у вас есть XHTML, вы можете загрузить его в XDocument и использовать API манипулирования XML или LINQ to XML для подсчета определенных режимов.
Если нет, вы можете попробовать использовать регулярные выражения.Но этот работает с небольшим количеством интересных тегов, так как вы должны вручную определить выражение для каждого тега.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...