Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Jak wczytać daną część pliku .html do struktury?

Ostatnio zmodyfikowano 2018-12-12 11:46
Autor Wiadomość
obeeey
Temat założony przez niniejszego użytkownika
Jak wczytać daną część pliku .html do struktury?
» 2018-12-11 17:42:44
Cześć,
staram się wczytać plik .html i rozdzielić jego treść na kilka innych plików, ale póki co nie wiem jak poprawnie zapisać to, by program wczytywał tekst od danego znaku, np. od pojawienia się <body> we wczytywanym tekście do </body> i zapisał to co jest pomiędzy tymi znacznikami w strukturze.

Tyle wymyśliłam:
C/C++
#include <iostream>
#include <fstream>
using namespace std;

const int row_length = 100;

struct html_struct {
    string head;
    string body;
    string p;
    string table;
    string ul;
};

html_struct records[ row_length ];

int main()
{
   
    ifstream file( "file.html" );
    string line;
   
    while( getline( file, line ) )
    {
        if( line == "<head>" )
        do
        {
            //wczytanie tresci do struktury records.head, ale jak?
           
        } while( !( line == "</head>" ) );
        //cout << line << endl;
    }
   
    file.close();
    return 0;
}

Nie wiem jak poprawnie to co jest powyżej zapisać, wiem, że jest to ogólnie zły zapis, ale tylko tyle wymyśliłam. Czy ktoś byłby w stanie mi pomóc?
P-173195
pekfos
» 2018-12-11 17:47:35
Ma to działać dla dowolnego pliku HTML? Jeśli tak, nie możesz założyć, że tag HTML znajduje się w osobnej linii, bez białych znaków na początku i końcu, i że jest w minimalnej postaci, bez żadnych atrybutów.
P-173196
obeeey
Temat założony przez niniejszego użytkownika
» 2018-12-11 17:54:44
Dla ograniczonego pliku html, który może się składać tylko z sekcji head i body + 3 znaczniki: <p>, <table> i <ul>, które nie zawierają się w sobie a występują osobno, tzn. nie może być <p><table> coś </p></table> a tylko samo <p> treść </p>.
P-173197
pekfos
» 2018-12-11 18:02:19
A jak z podziałem na linie? Może być
<p>abc</p>
czy musi być
<p>
abc
</p>
P-173198
obeeey
Temat założony przez niniejszego użytkownika
» 2018-12-11 18:04:24
Nie ma to znaczenia wg polecenia, przynajmniej nic nie jest o tym wspomniane. Tak jak wyjdzie łatwiej
P-173199
pekfos
» 2018-12-11 18:09:07
"Nic nie jest wspomniane" znaczy "nie można przyjąć takiego założenia". Ale jak chcesz najłatwiej, to możesz założyć że w każdej linii występuje tylko i wyłącznie tekst, lub tag HTML, nigdy jedno i drugie. Wtedy wystarczy tak:
C/C++
while( getline( file, line ) )
{
    if( line == "<head>" )
    while( getline( file, line ) && line != "</head>" )
        ; // line = linia tekstu między <head>, </head>
   
P-173200
obeeey
Temat założony przez niniejszego użytkownika
» 2018-12-11 18:14:44
Dziękuję, to przyjmę raczej tę najłatwiejszą opcję.
A w jaki sposób mogę całą treść między <head> a </head> przypisać do konkretnej struktury?

Mam na myśli coś takiego, ale znów nie wiem jak to składniowo ma poprawnie wyglądać:
C/C++
for( int i = 0; i < row_length; i++ )
{
    file >> records[ i ].head;
}
 
P-173202
pekfos
» 2018-12-11 18:26:36
Co to za treść?
P-173205
« 1 » 2
  Strona 1 z 2 Następna strona