XML Datei mit CSS richtig darstellen

  • Antworten:14
E. K.
  • Forum-Beiträge: 7

28.01.2012, 12:50:56 via Website

Hallo,

ich möchte gern eine XML-Datei von einem Server richtig darstellen. wenn ich Web View verwende zeigt es mir aber nur den Text ohne Layout an, da dieses im CSS file gespeichert ist. Ich hab bereits google benutzt und nichts gefunden. loadDatawithBase funktioniert leider nicht :( meine idee wäre es jetzt gewesen das file herunterzuladen + css und mit einer anderen View darzustellen doch leider finde ich keine.

wie schaffe ich es
1. das eine XML DAtei die man lokal speichert in der webview dargestellt wird
2. das ich dateien aus dem internet herunterlade und speichere

edit:
1. frage hat sich erledigt

webview.loadData("file:///FSGN-Vertretungsplan/res/drawable-hdpi/die/vplan.xml", "text/html", "utf-8");

funktioniert jetzt. allerdings zeigt es die xml nicht an sondern findet in ihr einen fehler -.-

Vielen dank schon im vorraus.

— geändert am 28.01.2012, 14:05:20

Antworten
Gian U.
  • Forum-Beiträge: 117

28.01.2012, 22:10:43 via Website

Was meinst du mit "XML-Datei richtig darstellen"? Normalerweise wird eine solche Datei als Informationstransport verwendet. Man kann natürlich auch XHTML verwenden, dass dann in einer WebView dargestellt werden kann.

Mnemono - Efficient learning!

Antworten
E. K.
  • Forum-Beiträge: 7

29.01.2012, 09:21:27 via Website

also wenn ich die xml einfach so in die webview lade wird nur der Text dargestellt und kein format :( also wird das xls file nicht beachtet. Das ist mein problem. gestern dachte ich noch webview lädt die css nicht mit aber genau genommen lädt es die xsl nicht.

Antworten
Markus B.
  • Forum-Beiträge: 636

29.01.2012, 10:47:58 via App

Hi,
hast du denn den Namespace korrekt gesetzt, damit die Webview die xsl-Datei laden kann? Einmal bissel Code von dir könnte helfen :-)

Gruß,
Markus

Antworten
E. K.
  • Forum-Beiträge: 7

29.01.2012, 10:52:50 via Website

main.java
1RadioButton montag = (RadioButton)findViewById(R.id.montag);
2 RadioButton dienstag = (RadioButton)findViewById(R.id.dienstag);
3 RadioButton mittwoch = (RadioButton)findViewById(R.id.mittwoch);
4 RadioButton donnerstag = (RadioButton)findViewById(R.id.donnerstag);
5 RadioButton freitag = (RadioButton)findViewById(R.id.freitag);
6 WebView webview;
7 Context context = getApplicationContext();
8 CharSequence text = "Vertretungsplan wird geladen...";
9 int duration = Toast.LENGTH_SHORT;
10 Toast toast = Toast.makeText(context, text, duration);
11
12 if(montag.isChecked())
13 {
14 setContentView(R.layout.anzeige);
15 toast.show();
16 webview = (WebView) findViewById(R.id.webview);
17 webview.loadUrl("http://vplan.fsg-niesky.de/mo/vplan.xml");
18 }
19 if(dienstag.isChecked())
20 {
21 setContentView(R.layout.anzeige);
22 toast.show();
23 webview = (WebView) findViewById(R.id.webview);
24 webview.loadUrl("http://vplan.fsg-niesky.de/die/vplan.xml");
25 }
anzeige.xml
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical">
6
7
8 <Button
9 android:id="@+id/zurueck"
10 android:layout_width="match_parent"
11 android:layout_height="wrap_content"
12 android:layout_marginTop="10px"
13 android:text="Zurück!"/>
14
15
16 <WebView
17 android:id="@+id/webview"
18 android:layout_width="match_parent"
19 android:layout_height="match_parent" />
20
21</LinearLayout>
Sorry bin noch ziemlich neu beim Programmieren.
Namespaces für die web view?

trotzdem schon mal danke :)

— geändert am 29.01.2012, 10:57:03

Antworten
Markus B.
  • Forum-Beiträge: 636

29.01.2012, 11:12:01 via Website

Hi,
ich gehe mal von folgendem aus:
Du hast eine XML (woher diese auch kommt) und möchtest diese mit einem xsl/xslt - Template vom Browser parsen lassen und entsprechend die HTML-Datei anzeigen. Dazu musst du ein paar Namespaces in der XML-Datei definieren. Zu diesem Thema gibt es bei selfhtml zwei ganz gute Seiten, welche du dir mal anschauen solltest: Beispiel und Darstellung
Als kleiner Hinweis sind folgende Zeilen:
1<?xml-stylesheet type="text/xsl" href="gruss.xsl" ?>

1<?xml-stylesheet type="text/css" href="fahrplan.css" ?>

Ich denke die Links werden helfen.

Gruß,
Markus

Antworten
E. K.
  • Forum-Beiträge: 7

29.01.2012, 11:18:58 via Website

naja nicht ganz, also ich habe eine xml die auf einem Server liegt. Dort liegt auch die xsl und die css. wenn ich aber die xml in der webview darstellen will, wird die xsl total ignoriert und es wird nur der Text aus der xml dargestellt ohne formatirung.

— geändert am 29.01.2012, 13:19:19

Antworten
Markus B.
  • Forum-Beiträge: 636

29.01.2012, 14:48:29 via Website

Hi,
dann zeigt mir doch mal bitte die css, xsl und xml Datei. Alternativ ein Link zu deiner Seite oder so.
Sonst kann ich hier nur raten.

Gruß,
Markus

— geändert am 29.01.2012, 14:57:37

Antworten
Tobias Berg
  • Forum-Beiträge: 32

29.01.2012, 15:27:26 via Website

wie währs mit nem HTML viewer?

Antworten
E. K.
  • Forum-Beiträge: 7

29.01.2012, 16:48:11 via Website

@ Markus
XML:
"vplan.fsg-niesky.de/mo/vplan.xml"
XLS
"vplan.fsg-niesky.de/mo/vplank.xls"
CSS
"vplan.fsg-niesky.de/allgemein/splan.css"

@ tobias
Hmtl viewer? wir kann ich den erstellen?

Antworten
Markus B.
  • Forum-Beiträge: 636

29.01.2012, 18:06:41 via Website

Hi E.K.,
ich habe mal ein bissel geschaut und habe wohl schlechte Nachrichten für dich.
Ich habe einfach mal ein kleines Beispiel auf meinen Server gepackt: http://www.cause-i-can.de/t/gruss.xml
Das funktioniert soweit auf meinem Desktop-Browsern.
Nun zum Problem:
Folgender Track besagt das unter Android 2.X kein client side xslt unterstützt wird.
Ich habe das mit meinem 2.3.3 nachvollzogen. Dort wird die xml-Datei nicht durch das xslt-Template gejagt. Unter 3.X funktioniert es hingegen. Ich habe das mit dem Standard Android Browser getestet auf welchem die WebView-Komponente aufsetzt.
Aus Interesse habe ich mir dann einfach mal die Firefox aus dem Market installiert und siehe da es funktioniert alles.
Tja, da muss du wohl den umständlichen Weg gehen und die XML-Datei auf dem Androiden parsen und dann die HTML-Datei im Browser anzeigen.

Gruß,
Markus

— geändert am 29.01.2012, 18:08:03

Antworten
E. K.
  • Forum-Beiträge: 7

29.01.2012, 18:30:02 via Website

Ich hab schon sowas geahnt das ich das Parsen muss...
ich bin immerhin schon soweit dass ich die datei downloade und speicher.
kannst du mir vllt ein gutes tutorial empfehlen bzw. einen parser SAX oder DOM?

Vielen Dank
für deine Mühe

Antworten
Markus B.
  • Forum-Beiträge: 636

29.01.2012, 18:38:34 via Website

Hi,
also ich empfehle die den SAX Parser, da dieser einfach effizienter in Sachen Speicher und Geschwindigkeit ist. Ist allerdings auch etwas mühseliger zu programmieren aber die Vorteile wiegen hier den Nachteil auf :)

Ein spezielles Tutorial kann ich dir jetzt nicht empfehlen. Wenn du nach android sax toturial bei google sucht sehen die ersten viel Seiten sehr gut aus z.B. http://www.anddev.org/parsing_xml_from_the_net_-_using_the_saxparser-t353.html

Gruß,
Markus

Antworten
E. K.
  • Forum-Beiträge: 7

29.01.2012, 18:47:49 via Website

Kann ich mit sax das XMl auch als string ausgeben und den dann in die WEBview laden?
Nochma DAnke :)

Antworten
Markus B.
  • Forum-Beiträge: 636

29.01.2012, 18:54:42 via Website

Hi,
jau du kannst sowas machen:

1String summary = "<html><body>You scored <b>192</b> points.</body></html>";
2 webview.loadData(summary, "text/html", null);

Gruß,
Markus

Antworten