HTML editieren

  • Antworten:9
Jenush
  • Forum-Beiträge: 5

17.07.2011, 19:41:16 via Website

Hallo erstmals,

Ich bin gerade dabei eine Stundenplan APP zu programmieren.

Mein Problem: Ich habe Zugriff auf das reine HTML file, jedoch hat dieses keinen Link zu einem CSS.
Ich habe schon versucht das HTML zu laden und danach mit Jsoup den Code hinzuzufügen, der zu meinem CSS file im assets Ordner verweist, jedoch ohne Erfolg.
Kann mir jemand Helfen?

1package com.hallo.stundenplan;
2
3import java.io.IOException;
4import java.io.PrintWriter;
5import java.io.Writer;
6
7import org.jsoup.Jsoup;
8import org.jsoup.nodes.Document;
9import org.jsoup.nodes.Element;
10
11import android.app.Activity;
12import android.os.Bundle;
13import android.webkit.WebView;
14import android.webkit.WebViewClient;
15
16public class Stundenplan extends Activity {
17 /** Called when the activity is first created. */
18
19 String url = "http://info.tam.ch/display/timetable_external.php?school=klw&sem=55&class=1&week=34";
20 Document document;
21 String html;
22
23 public void onCreate(String... args){
24
25 try {
26 document = Jsoup.connect(url).get();
27 } catch (IOException e1) {
28 e1.printStackTrace();
29 }
30 Element head = document.head();
31 head.append("<link rel=\"stylesheet\"/klw.css\">");
32 html = document.html();
33
34 String charset = Jsoup.connect(url).response().charset();
35 // ...
36 try{
37 Writer writer = new PrintWriter("/klw.html", charset);
38 writer.write(html);
39 writer.close();
40 }
41 catch (IOException e) {
42 e.printStackTrace();
43 }
44 }
45 @Override
46 public void onCreate(Bundle savedInstanceState) {
47
48 super.onCreate(savedInstanceState);
49 setContentView(R.layout.main);
50 WebView mWebView;
51
52 mWebView = (WebView) findViewById(R.id.webView);
53 mWebView.setWebViewClient(new WebViewClient());
54 mWebView.loadUrl("file:///android_asset/klw.html");
55 }
56}

— geändert am 17.07.2011, 19:43:36

Antworten
Gelöschter Account
  • Forum-Beiträge: 8.246

17.07.2011, 20:40:31 via App

das sieht eher nach java script aus und nicht nach HTML.
deine css Datei liegt im selben Ordner wie die HTML Datei.
klw.css

— geändert am 17.07.2011, 20:41:30

Antworten
Jenush
  • Forum-Beiträge: 5

17.07.2011, 20:46:17 via Website

Nein, Javascript hat es nirgends. Die CSS Datei liegt im Assets Ordner und das HTML File sollte nach der Bearbeitung mit dem HTML-Parser auch in den Assets Ordner gespeichert werden.

Der Emulator zeigt an, dass die Datei nicht gefunden werden kann.

— geändert am 17.07.2011, 20:46:42

Antworten
Gelöschter Account
  • Forum-Beiträge: 8.246

17.07.2011, 20:55:40 via App

dein geposteter Code ist aber kein HTML.

Antworten
Jenush
  • Forum-Beiträge: 5

17.07.2011, 21:20:40 via Website

Oke und wie mach ich das jetzt?

Antworten
Gelöschter Account
  • Forum-Beiträge: 8.246

17.07.2011, 23:31:04 via Website

Ok,
jetzt Zuhause in groß verstehe ich das besser.
Den Code, den du da gepostet hast, der das ist der Quellcode deiner App, oder?

Ich weiß leider nicht, wie die css da geladen wird, aber normalerweise sollte der Verweis auf die css in der htmldatei selbst liegen.
Da der link dazu hier aber schon vorher kommt, funktioniert das da wohl anders.
Ich würde aber mal sagen, das dann in diesem Fall Pfadangabe eventuell nicht passt:

1head.append("<link rel=\"stylesheet\"/klw.css\">");
1head.append("<link rel=\"stylesheet\"/android_asset/klw.css\">");

Aber wie gesagt, im Normalfall wird die cssdatei im Header der htmldatei geladen.

Antworten
Jenush
  • Forum-Beiträge: 5

17.07.2011, 23:41:03 via Website

Hallo
Vielen Dank für die Hilfe, jedoch funktioniert dies auch nicht.
Das Problem ist, dass ich keinen Zugriff auf die Ursprungsdatei habe und diese auch nicht auf ein CSS verweist. (Hier die URL, vielleicht Hilft dir der Quellcode etwas: http://info.tam.ch/display/timetable_external.php?school=klw&sem=55&class=1&week=34)
Gedacht habe ich mir, dass ich das HTML mit Jsoup lade. Jsoup fügt dann in den Head die Verlinkung für das CSS ein.
Danach schreibe ich das modifizierte HTML mit dem Writer in den Assets Ordner und anschliessend ladet das Webview die Datei.

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

17.07.2011, 23:42:25 via Website

@Peter:
1. der gepostete Code ist Java - der TE will damit zeigen, wie er beim Verarbeiten der Datei vorgeht
2. die betreffende HTML-Seite ist offenbar eigentlich eine Art inlude - jedenfalls gibts da kein head, kein body, kein html...

@Jenush:
1. Siehe Punkt 2 von oben - dann wird "head.append" wohl auch nicht funktionieren
2. wen du den assets Ordner deines Projektes meinst, da kannst du mW nichts reinschreiben - daher wird dir auch gemeldet, das die Datei nicht gefunden werden kann.

Antworten
Jenush
  • Forum-Beiträge: 5

17.07.2011, 23:47:38 via Website

@and_dev
Danke für die Hinweise. Bin leider kein guter Programmierer. Weisst du wie ich diese Probleme löse?

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

18.07.2011, 00:06:28 via Website

Mein Ansatz wäre, die Datei herunter zu laden (in einen String), den fehlenden Rahmen drumzu zu stricken (inline style-Block) und den fertigen String direkt an den WebView zu übergeben.

Antworten