Как вы анализируете HTML в vb.net

Подраздел не нужен:

#include <string.h>
#include <stdio.h>

typedef unsigned long uint32;

/* N[0] - contains least significant bits, N[3] - most significant */
char* Bin128ToDec(const uint32 N[4])
{
  // log10(x) = log2(x) / log2(10) ~= log2(x) / 3.322
  static char s[128 / 3 + 1 + 1];
  uint32 n[4];
  char* p = s;
  int i;

  memset(s, '0', sizeof(s) - 1);
  s[sizeof(s) - 1] = '\0';

  memcpy(n, N, sizeof(n));

  for (i = 0; i < 128; i++)
  {
    int j, carry;

    carry = (n[3] >= 0x80000000);
    // Shift n[] left, doubling it
    n[3] = ((n[3] << 1) & 0xFFFFFFFF) + (n[2] >= 0x80000000);
    n[2] = ((n[2] << 1) & 0xFFFFFFFF) + (n[1] >= 0x80000000);
    n[1] = ((n[1] << 1) & 0xFFFFFFFF) + (n[0] >= 0x80000000);
    n[0] = ((n[0] << 1) & 0xFFFFFFFF);

    // Add s[] to itself in decimal, doubling it
    for (j = sizeof(s) - 2; j >= 0; j--)
    {
      s[j] += s[j] - '0' + carry;

      carry = (s[j] > '9');

      if (carry)
      {
        s[j] -= 10;
      }
    }
  }

  while ((p[0] == '0') && (p < &s[sizeof(s) - 2]))
  {
    p++;
  }

  return p;
}

int main(void)
{
  static const uint32 testData[][4] =
  {
    { 0, 0, 0, 0 },
    { 1048576, 0, 0, 0 },
    { 0xFFFFFFFF, 0, 0, 0 },
    { 0, 1, 0, 0 },
    { 0x12345678, 0x90abcdef, 0xfedcba90, 0x8765421 }
  };
  printf("%s\n", Bin128ToDec(testData[0]));
  printf("%s\n", Bin128ToDec(testData[1]));
  printf("%s\n", Bin128ToDec(testData[2]));
  printf("%s\n", Bin128ToDec(testData[3]));
  printf("%s\n", Bin128ToDec(testData[4]));
  return 0;
}

Выход:

0
1048576
4294967295
4294967296
11248221411398543556294285637029484152
16
задан Charles Stewart 3 January 2010 в 06:51
поделиться

4 ответа

Мне нравится пакет Гибкости HTML - это - очень разработчик, дружественный, свободный и исходный код доступен.

7
ответ дан derloopkat 3 January 2010 в 16:51
поделиться
  • 1
    @MalcolmO' Заяц Да, и оба абсолютно идентичны. Это скомпилирует в это. I' ve нашел, что большинство людей предпочитает Join быть выписанным с помощью синтаксиса запроса по синтаксису метода, еще больше, чем любой из других методов запроса. – Servy 3 April 2013 в 03:58

Если Ваш HTML следует стандартам XHTML, можно сделать большой парсинг и обработку использования классов пространства имен System.XML.

, Если, с другой стороны, если то, что Вы анализируете, - то, что веб-разработчики называют "супом тега", Вам будет нужен сторонний синтаксический анализатор как Пакет Гибкости HTML .

Это может быть только частичным решением Вашей проблемы, при попытке выяснить, как браузер интерпретирует Ваш HTML как каждый суп тега синтаксических анализов браузера немного по-другому.

4
ответ дан Yes - that Jake. 3 January 2010 в 16:51
поделиться
  • 1
    Ну, я запустил простой тест, и результаты Join были существенно быстрее. ideone.com/xW1CnL . You' ll должен выполнить код самостоятельно для использования большего набора данных. – Servy 3 April 2013 в 04:41

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

1
ответ дан Andrew Hare 3 January 2010 в 16:51
поделиться
  • 1
    Если бы производительность вне рассмотрения, то я взял бы простоту кода. Это было бы субъективным и персональным предпочтением. – Adrian Godong 3 April 2013 в 07:31

'add prog ref too: Microsoft.mshtml

'затем на странице:

Imports mshtml

Function parseMyHtml(ByVal htmlToParse$) As String
    Dim htmlDocument As IHTMLDocument2 = New HTMLDocumentClass()
    htmlDocument.write(htmlToParse)
    htmlDocument.close()

    Dim allElements As IHTMLElementCollection = htmlDocument.body.all

    Dim allInputs As IHTMLElementCollection = allElements.tags("a")
    Dim element As IHTMLElement
    For Each element In allInputs
        element.title = element.innerText
    Next

    Return htmlDocument.body.innerHTML
End Function

Как найдено здесь:

13
ответ дан 30 November 2019 в 21:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: