html in c array

Gast
maik schrieb:
> Hallo wie der Betreff schon sagt suche ich ein Programm das mir
> aus
> einer Html datei ein c array erzeugt.

Wenn du jetzt noch verrätst, was das werden soll, kann dir sicherlich 
auch geholfen werden.
Im einfachsten Fall kann man sagen, daß die html-Datei schon ein Array 
aus Bytes ist. Aber das meinst du sicherlich nicht. Wie also sollen die 
Felder des Arrays aussehen, was sollen für Felder vorhanden sein, wie 
viele, mit was sollen sie gefüllt werden und so weiter...
Vielleicht wäre auch ein Beispiel ganz nützlich, mit der html-Datei und 
dem daraus zu erstellendem Array. Aber mit deinen jetzigen Angaben kann 
man nichts sinnvolles anfangen...
maik schrieb:
> Hallo wie der Betreff schon sagt suche ich ein Programm das mir
> aus einer Html datei ein c array erzeugt.
1
int main(int argc, char** argv)
2
{
3
  FILE *html = fopen("website.html", "rb");
4
  if(!html)
5
    return -1;
6
  FILE *output = fopen("out.c", "w");
7
  if(!output)
8
  {
9
    fclose(html);
10
    return -1;
11
  }
12

13
  char read;
14
  fread(&read, sizeof(char), 1, html);
15
  fprintf(output, "char array[] = {%d", read);
16

17
  fread(&read, sizeof(char), 1, html);
18
  while(!feof(html))
19
  {
20
    fprintf(output, ", %d", read);
21
    fread(&read, sizeof(char), 1, html);
22
  }
23

24
  fprintf(output, "};\n");
25
  fclose(html);
26
  fclose(output);
27
  return 0;
28
}
Gast
Daa sollte dann so aussehen.
Ich suche ein programm welches die html datei einliest und daraus dann 
array generiert.

das programm sollte für Windows sein



static const unsigned char data_page[] = {
  0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 
0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
  0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
  0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31,
  0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72,
  0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68,};
Angehängte Dateien:
Gast
Hallo maik,

maik schrieb:
> Daa sollte dann so aussehen.
> Ich suche ein programm welches die html datei einliest und daraus dann
> array generiert.
>
> das programm sollte für Windows sein
>
> static const unsigned char data_page[] = {
>   0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e,
> 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
>   0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
>   0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31,
>   0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72,
>   0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68,};

Für sowas (und vieles andere) lohnt es sich meisten auch unter Windows, 
eine Python-Installation an Bord zu haben:
1
hx = list()
2
with open("datei.html", "r") as ifh:
3
    for line in ifh.readlines():
4
        for char in line:
5
            hx.append(hex(ord(char)))
6
print ', '.join(hx)

Liebe Grüße,
Karl
Gast
>Daa sollte dann so aussehen.
Dafür brauchst Du kein spezielles Programm.
Speichere die HTML Seite als Textdatai ab.


- Markiere allen Anführungsszeichen " und ersetze alle durch ein \"
- Markiere einen Zeilenumbruch und ersetzte alle durch \r\n" 
ZEILENUMBRUCH "
- Davor ein PROGMEM char Page1[] = {"
- Danach ein "};
Gast
Ich suche ein Programm welches mir aus der Webseite ein Array erzeugt.
So in etwa.
1
static const unsigned char data_page[] = {
2
0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
3
0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
4
0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31,
5
0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72,
6
0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68,};
1
//Dazustellende Webseite
2
PROGMEM char Page1[] = {
3
 "<head>\r\n"
4
   "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\r\n"
5
   "<title>Net-IO Webserver</title>\r\n"
6
   "<style type=\"text/css\">\r\n"
7
     "<!--"
8
     // "BODY {margin: 0 0 0 0; background-color: white; text-align:center;}\r\n"
9
     "HTML {background-color:#FFFFFF;font-family: Comic Sans MS;}\r\n\r\n"
10
     "P, DIV, H1, H2 {font-family: verdana, arial; font-size: 11px;}\r\n"
11
     "FIELDSET {background-color: #D9D9CC;}\r\n"
12
     "H1 {background-color: #CCCCFF; padding-top:5px; padding-bottom:5px;\r\n"
13
       "font-size: 20px; color: #004060; font-weight:bold; letter-spacing: 8px;\r\n"
14
       "border-top: 2px solid #EEEEEE; border-left: 2px solid #EEEEEE;\r\n"
15
       "border-bottom: 2px solid #004060; border-right: 2px solid #004060;}\r\n"
16
     "H2 {font-size: 15px; padding-top: 20px; padding-left:50px; padding-right:50px;\r\n"
17
       "color:#004080; font-weight:bold;}\r\n"
18
     "P, H1, H2 {margin: 0px 0px 5px 0px;}\r\n"
19
     "-->"
20
   "</style>\r\n"
21
 "</head>\r\n"
22
 "<body>\r\n"
23
 "<br>\r\n"
24
 "<table align=\"center\" width=\"650\" border=\"0\">\r\n"
25
   "<tr>\r\n"
26
     "<td colspan=\"2\">\r\n"
27
       "<div align=\"center\">\r\n"
28
       "<h1>Net-IO Webserver</h1>\r\n"
29
       "</div><BR>\r\n"
30
     "</td>\r\n"
31
   "</tr>\r\n"
32
   "<tr>\r\n"
33
     "<td colspan=\"2\">\r\n"
34
       "<div align=\"center\">\r\n"
35
       "<p>Software Version: 3.0</p>\r\n"
36
       "</div>\r\n"
37
     "</td>\r\n"
38
   "</tr>\r\n"
39
   "<tr valign=\"top\">\r\n"
40
     "<td>\r\n"
41
       "<fieldset style=\"width:300px\"><legend>Digital Control</legend>\r\n"
42
  
43
       "<form name=\"form1\" method=\"post\" action=\"\">\r\n"
44
         "<div align=\"left\">\r\n"
45
      // ------------ Digital-Ausgänge PortC[0..7] ------------
46
      //Port Schalten und Status %PORTCn bedeutet PORTC PINn
47
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"A\" %PORTC0>\r\n"
48
       "<span class=\"Stil2\">Port C Pin 0</span></p>\r\n"
49

50
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"B\" %PORTC1>\r\n"
51
       "<span class=\"Stil2\">Port C Pin 1</span></p>\r\n"
52

53
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"C\" %PORTC2>\r\n"
54
       "<span class=\"Stil2\">Port C Pin 2</span></p>\r\n"
55

56
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"D\" %PORTC3>\r\n"
57
       "<span class=\"Stil2\">Port C Pin 3</span></p>\r\n"
58

59
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"E\" %PORTC4>\r\n"
60
       "<span class=\"Stil2\">Port C Pin 4</span></p>\r\n"
61

62
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"F\" %PORTC5>\r\n"
63
       "<span class=\"Stil2\">Port C Pin 5</span></p>\r\n"
64

65
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"G\" %PORTC6>\r\n"
66
       "<span class=\"Stil2\">Port C Pin 6</span></p>\r\n"
67

68
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"H\" %PORTC7>\r\n"
69
       "<span class=\"Stil2\">Port C Pin 7</span></p>\r\n"
70

71
       "<br>\r\n"
72
         // ------------------ WOL ------------------
73
         #if USE_WOL
74
         "<p><input type=\"checkbox\" name=\"OUT\" value=\"W\">\r\n"
75
         "<span class=\"Stil2\">WOL Enterprise</span></p>\r\n"
76
       #endif //USE_WOL
77
 
78
       "<pre align=\"left\"><input type=\"submit\" name=\"SUB\" value=\"Senden\"></pre>\r\n"
79
       "</div>\r\n"
80
     "</form>\r\n"
Gast
maik schrieb:
> Hallo wie der Betreff schon sagt suche ich ein Programm das mir aus
> einer Html datei ein c array erzeugt.

warum umständlich wenn es auch einfach geht?

Du kannst jedes Datei(auch html) in ein objekt für den Linker umwandeln. 
Damit kannst du dann einfach mit C darauf zugreifen.

http://www.atmel.com/webdoc/AVRLibcReferenceManual/FAQ_1faq_binarydata.html

Dann kann man auch mal schnell die html Datei anpassen.
Ich habe mir dazu mal folgende Skripts erstellt:

html_to_inc.bat:
1
@echo off
2
rem Wandelt eine Eingabe HTML-Datei (Parameter 1) in eine Datei die im C-Programm
3
rem includiert werden kann. Am Zeilenanfang und -ende wird ein " hinzugefügt.
4
rem Sonderzeichen ' und " werden escaped, an die letzte Zeile wird ein ; angehängt.
5

6
sed 's/\''/\\\'\'/g;s/"/\\\"/g;s/^^/\\"/g;s/$/\\"/g' %1 > html_to_inc.tmp
7
sed $'s/$/;/g' html_to_inc.tmp > %2
8
rm html_to_inc.tmp

Und dann in ein Makefile gepackt:
1
# HTML-Dateien in Format für includierung zu wandeln
2
htmltoinc:
3
  @echo Konvertiere HTML-Dateien...
4
  html_to_inc.bat index.html index.html_inc
5
  html_to_inc.bat status.html status.html_inc
6
  html_to_inc.bat led.html led.html_inc
7
  html_to_inc.bat test.html test.html_inc
8
  html_to_inc.bat page_not_found.html page_not_found.html_inc
9
  @echo ...beendet.
10
  @echo

Und dann im C-Code mit
#include "index.html_inc"
einbinden.
Gast
Gibst denn kein programm für windows wo die html datei eingelesen wird 
und als ausgang dann mein array.

wie zum beispiel für bilddaten solch ein konverter
maik schrieb:
> Gibst denn kein programm für windows wo die html datei eingelesen wird
> und als ausgang dann mein array.

Wahrscheinlich nicht. Denn einerseits wäre die Parametrierung viel zu 
aufwendig (Wie soll das Feld heißen? Welchen genauen Typ und welche 
Attribute solle es haben? Soll ein '\r', ein '\n' oder ein '\r\n' 
angehangen werden? etc.) und andererseits gibt es genug Werkzeuge, die 
solche Aufgaben mit einem simplen Einzeiler erledigen, zum Beispiel die 
Unix-Shell:

1
$ cat myfile.html | (echo "PROGMEM char Page1[] = {"; awk '{printf("\t\"%s\\r\\n\"\n", $0)}'; echo "};")

Natürlich muss man die nicht selten etwas kryptische Handhabung solcher 
Werkzeuge erst einmal erlernen, die Zeit ist aber oft besser investiert 
als die immer wiederkehrende Suche nach einem passenden 
ready-to-use-out-of-the-box Tool.

Eine Sammlung geeigneter Techniken findest Du hier: 
http://docscript.sourceforge.net/docscript.pdf Da geht es zwar primär um 
die Erstellung von HTML-Dokumenten, die Techniken können aber ebenso gut 
zur Generierung von Quellcode eingesetzt werden.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.