Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Чтение HTML документа средствами VB.NET / 11 сообщений из 11, страница 1 из 1
24.07.2004, 02:06
    #32619779
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
Проблема состоит в том, что то, как считывать инфу из .txt, .xml, .xls я уже знаю, а вот как считать инфу из файла HTML...???
Прикладываю файл, который мне нужно прочитать средствами VB.NET, в надежде, что кто-то раньше уже решал подобную проблему и, теперь, может поделиться решением...
P.S. Для модераторов: Вопрос не по ASP.NET (этот файл-отчёт генерирует прога работающая на локальном компе и к WEB она не имеет никакого отношения, просто такой формат...)
Для желающих ответить: конечно, файл можно принудительно проэкспортировать в Excel и читать оттуда, но это - ...не то что бы не прикольно, а просто доолго и нудно (и, как мне кажется, не очень профессионально )
...
Рейтинг: 0 / 0
24.07.2004, 02:25
    #32619781
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
а что ты понимаешь под "считывать инфу" ??? (открыть файл на чтение, показать на форме, получить welformed xml, ...)
...
Рейтинг: 0 / 0
24.07.2004, 09:56
    #32619822
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
Извиняюсь, что не объяснил сразу...
Там существуют тэги, вот из них мне и нужно считать инфу, занося её в переменные, в данном случае, меня интересует следующее:
Код: plaintext
1.
2.
3.
User@Time  Vladimir@ 2004 - 07 - 24   00 : 31 : 58  
Action  Run 
Application Name  test - Microsoft Internet Explorer 
Должно выглядеть примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Цикл для чтения
каким то образом считываем инфу из тэгов и переменным присваиваем значение прочитанного...
Dim m as string="Vladimir@2004-07-24 00:31:58 
"
Dim mm as string="Run"
Dim mmm as string="test - Microsoft Internet Explorer"
...
Конец цикла
Ну, и конечно всё это должно происходить в цикле...
...
Рейтинг: 0 / 0
24.07.2004, 17:33
    #32620002
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
импортиру в проект Microsoft HTML Object Library (добавь в References)


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
using mshtml;
...
string txt;
using(StreamReader tr=new StreamReader(@"c:\temp\test1.htm"))
{ txt=tr.ReadToEnd();
  tr.Close();
}

object[] psa={txt};
mshtml.HTMLDocumentClass doc=new mshtml.HTMLDocumentClass();
doc.IHTMLDocument2_write(psa);

и далее выбирай нужные тебе node по интерфейсу IHTMLDocument2 [очень похоже на XML :-) ]
...
Рейтинг: 0 / 0
24.07.2004, 17:35
    #32620004
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
Oops, извини. написал на C#. В обшем то на VB будет очень похоже.
...
Рейтинг: 0 / 0
24.07.2004, 17:49
    #32620010
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
Истина где то рядом...
Переведите кто-нибудь первую и последнюю строку на VB.NET..
PLEASE...
Код: plaintext
1.
2.
3.
object[] psa={txt};
mshtml.HTMLDocumentClass doc=new mshtml.HTMLDocumentClass();
doc.IHTMLDocument2_write(psa);
...
Рейтинг: 0 / 0
24.07.2004, 18:16
    #32620020
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
Код: plaintext
1.
2.
3.
   Dim psa() As Object = {txt}
   Dim doc As mshtml.HTMLDocumentClass = New mshtml.HTMLDocumentClass
   doc.IHTMLDocument2_write(psa)

С этим сам справился, а вот
автори далее выбирай нужные тебе node по интерфейсу IHTMLDocument2
Нельзя ли поподробнее (с фрагментом кода, можно и C#), а то у меня пока получилось только title прочитать
...
Рейтинг: 0 / 0
24.07.2004, 18:17
    #32620022
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
приблизительно, так
Код: plaintext
1.
2.
3.
Dim psa( 1 ) As Object

  psa( 0 ) = txt
  doc.IHTMLDocument2_write(psa)
...
Рейтинг: 0 / 0
24.07.2004, 19:03
    #32620045
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
Кузя, извини, я неочень силён в логике, но...
Код: plaintext
1.
2.
3.
   Dim psa() As Object = {txt}
   Dim doc As mshtml.HTMLDocumentClass = New mshtml.HTMLDocumentClass
   doc.IHTMLDocument2_write(psa)
Мы уже загнали в doc всё содержимое файла, и я так понимаю, можно каким то образом обрасчаться к его тэгам (вот например Debug.WriteLine(doc.IHTMLDocument2_title()) выдаст значение названия документа)
А, сейчас ты предлагаешь, снова объявить psa присвоить ему значение txt и вписать его в doc...
Код: plaintext
1.
2.
3.
  Dim psa( 1 ) As Object
  psa( 0 ) = txt
  doc.IHTMLDocument2_write(psa)
Исходный файл по строкам перечитывать, или я чего то не догоняю...
Спасибо за помощь, и извини за глупость, но объясни, пожалуйста, КАК???
1. пройтись по всем тэгам файла?
2. выбрать интересующую меня инфу из нужного тэга?
...
Рейтинг: 0 / 0
24.07.2004, 20:41
    #32620061
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
пройтись по всем тегам таблиц(ы) (C#):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
mshtml.IHTMLElementCollection dd=doc.getElementsByTagName("table");

for(int i= 0 ; i<dd.length; i++)
{ 
  mshtml.HTMLTableClass tb=(mshtml.HTMLTableClass)dd.item(null, i);

  foreach(mshtml.HTMLTableRowClass row in tb.rows)
  { 
    foreach(mshtml.HTMLTableCellClass col in row.cells)
    {
      string sl=col.innerHTML;
    }
  }
}
...
Рейтинг: 0 / 0
24.07.2004, 22:13
    #32620117
vladgrig
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Чтение HTML документа средствами VB.NET
Ну, вот, говорила мне мама: "...не желай чего-то очень сильно. Что будешь делать, если желание исполнится???".
Так и произошло...
Как теперь отплатить за помощь??? НЕЗНАЮ...
Наверное, просто положу код, переведённый на VB.NET...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
        Dim tr As New StreamReader("c:\test1.htm")
        Dim txt As String = tr.ReadToEnd()
        tr.Close()

        Dim psa() As Object = {txt}
        Dim doc As mshtml.HTMLDocumentClass = New mshtml.HTMLDocumentClass
        doc.IHTMLDocument2_write(psa)

        Dim dd As mshtml.IHTMLElementCollection = doc.getElementsByTagName("table")

        For i As Integer =  0  To dd.length -  1 
            Dim tb As mshtml.HTMLTableClass = dd.item(i)

            For Each row As mshtml.HTMLTableRowClass In tb.rows

                Dim col As mshtml.HTMLTableCellClass = row.cells.item( 0 )
                Dim sl As String = col.innerText
               
                If Not (sl Is Nothing) Then
                    Dim col1 As mshtml.HTMLTableCellClass = row.cells.item( 1 )
                    Dim sl1 As String = col1.innerHTML
                    Debug.WriteLine(sl & sl1)
                End If
            Next
        Next
Дёшево и сердито...
P.S. Кузя, моя благодарность просто НИЧТО, по сравнению с благодарностью парня, который в ручную выбирал нужные поля из этого logfile...
ОГРОМНОЕ СПАСИБО!!!
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Чтение HTML документа средствами VB.NET / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]