Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
Account gelöscht
Ort: -
Alter: -
|
Verfasst Di 29.03.2005 14:16
Titel
|
|
|
Das Skript funktioniert doch so wie ich es umgewandelt habe? warte...
doch funzt (???) wo liegt das problem, du musst einfach nur die elementhandler-funktionen um die entsprechenden elemente erweitern (die switch-sachen)
Zuletzt bearbeitet von am Di 29.03.2005 14:22, insgesamt 1-mal bearbeitet
|
|
|
|
|
gtz
Dabei seit: 15.04.2002
Ort: -
Alter: 48
Geschlecht:
|
Verfasst Di 29.03.2005 14:18
Titel
|
|
|
ohne jetz weiteres anzugehn, kann mir ma jemand erklärn, wozu das hier gut sein soll?
Code: |
switch (strtolower($ID))
{
case "ID":
$ausgabe .="</a>";
}
|
|
|
|
|
|
Anzeige
|
|
|
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Di 29.03.2005 14:22
Titel
|
|
|
letztere habe ich schon gelöscht.
momentaner Code
Code: |
<?php
function cdata($parser, $inhalt)
{
global $ausgabe;
$ausgabe .= $inhalt;
}
function Produktgruppen($parser, $name, $atts)
{
global $ausgabe;
switch (strtolower($ID))
{
case "content":
$ausgabe .="<h2>".$atts["Inahlt"]."</h2>";
break;
case "Produktgruppe":
$ausgabe .="<h2>".$atts["PRODUKTGRUPPE"]."</h2>";
break;
default:
$error = "Undefiniertes Element <".$name.">";
die ($error . " in Zeile " . xml_get_current_line_number($parser));
break;
}
}
$file = "http://www.uk-consult.de/content/contentmanagement/content2xml.asp?num=18661";
$parser = xml_parser_create();
xml_set_element_handler($parser, "Produktgruppen","Produkte");
xml_set_character_data_handler($parser, "cdata");
$file = implode('',file($file));
if (!xml_parse($parser, $file)) {
echo xml_error_string(xml_get_error_code($parser));
}
xml_parser_free($parser);
echo $ausgabe;
?> |
habe bis jetzt noch nie was mit XML gemacht.
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Di 29.03.2005 14:23
Titel
|
|
|
MEIN GOTT DAS FUNKTIONIERT!!!!! DIE SWITCH ANWEISUNG FÄNGT DIE ELEMENTNAMEN AB!!!!!
Code: | <?php
function cdata($parser, $content)
{
global $ausgabe;
$ausgabe .=$content;
}
function StartProduktgruppen($parser, $ID, $Name)
{
global $ausgabe;
switch ($ID) { //strtolower natürlich schwachsinn hier
case "ID":
$ausgabe .="<a href=\"#".$ID["ID"]."\">";
break;
case "NAME":
$ausgabe .= "<h1>".$Name["Name"]."</h1>";
break;
/******************************************/
// HIER DEN ELEMENTHANDLER ERWEITERN!!!!!!!
/******************************************/
default:
$error = "Undefiniertes Element <b><".$ID."></b>";
die ($error . " in Zeile " . xml_get_current_line_number($parser));
break;
}
}
function EndProduktgruppen($parser, $ID)
{
global $ausgabe;
switch (strtolower($ID)) {
case "ID":
$ausgabe .="</a>";
}
}
$file = "http://www.uk-consult.de/content/contentmanagement/content2xml.asp?num=18661";
$parser = xml_parser_create();
xml_set_element_handler($parser, "StartProduktgruppen", "EndProduktgruppen");
xml_set_character_data_handler($parser, "cdata");
$file = implode('',file($file));
$file = str_replace("<?xml version=\"1.0\"?>\r", "", $file);
//echo htmlentities($file);
//$file ="<p>test</p>";
if (!xml_parse($parser, $file)) {
echo xml_error_string(xml_get_error_code($parser));
}
xml_parser_free($parser);
echo $ausgabe;
?> |
Zuletzt bearbeitet von am Di 29.03.2005 14:24, insgesamt 1-mal bearbeitet
|
|
|
|
|
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Di 29.03.2005 14:44
Titel
|
|
|
ja ich bin zu blöd.
wieso in der switch anweisung keine umwandlung in kleinbuchstaben?
ich habe mir div. beispiele angeschaut wo das auch dort gemacht wurde.
ansonsten in der funktion wo die daten gelesen werden.
ja und, die ELEMENTHANDLER zu erweitern bereitet mir auch schwierigkeiten.
ich habe einfach ein verständnissproblem.
|
|
|
|
|
gtz
Dabei seit: 15.04.2002
Ort: -
Alter: 48
Geschlecht:
|
Verfasst Di 29.03.2005 14:49
Titel
|
|
|
Kash hat geschrieben: | ja ich bin zu blöd.
wieso in der switch anweisung keine umwandlung in kleinbuchstaben?
|
weil du den in kleinbuchstaben umgewandelten string gleich danach auf gleichheit mit einer zeichenkette aus GROSSBUCHSTABEN prüfst. das kann man natürlich machen, aber was da rauskommen MUSS, kann man sich durchaus allumfassend vorher schon denken.
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Di 29.03.2005 14:53
Titel
|
|
|
naja, das ist eigentlihc latte, ob du die umwandelst, dann musst du die entsprechenden fälle aber auch entspr. auszeichnen.
Also von Anfang an: Ist das entspr. Flag nicht gesetzt, werden alle Element- und Attributnamen in Großbuchstaben umgewandelt (natürlich nicht deren Werte).
Diese kannst du nach gusto gerne auch wieder in Kleine Umwandeln, nur springt ein strtolower("A") natürlich nciht mehr auf die Anweisung case "A": an. verstehste?
Mit dem Elementhandler ists ganz einfach: Die Funktionen wurden dem Parser als die "für öffnende, für schließende und für CDATA-Abschnitt Zuständige zugewiesen (mit set_element...).
Nun werden diese Funktionen automatisch bei jedem Element, dass der SAX-Parser "trifft", aufgerufen (callback-Funktion). Mit den übergebenen Parametern kannst du nun spielen.
in der Switch-Anweisung wird einfach nur der elementname abgefragt.
Code: | case "ID":
$ausgabe .="<a href=\"#".$ID["ID"]."\">";
break; |
macht nichts anderes, als aus dem Element <id>, im Parser intern "ID", die Stringausgabe <a href="ID-Wert"> zu konstruieren.
Spiel einfach mit den Werten und schaue, was den Funktionen so alles übergeben wird, auf was du alles wie zugreifen kannst.
Willst du den Parser auch mal unterbrechen, rekursive mehrfachaufrufe starten o.Ä., bietet es sich an, eine XML-Parser Klasse zu schreiben und direkt auf die Funktion "xml_parse_into_struct" zurückzugreifen, die dir den ganzen XML-Baum als Mehrdimensionales Array zur verfügung stellt.
|
|
|
|
|
Kash
Threadersteller
Dabei seit: 07.11.2002
Ort: Schopfheim
Alter: 41
Geschlecht:
|
Verfasst Di 29.03.2005 15:03
Titel
|
|
|
ich verstehe schon besser.
aber ein konkretes Beispiel für mein Problem mit dazugehöriger Ausgabe wären ein gutes Beispiel womit ich sicher einfacher Arbeiten könnte.
Ihr wißt ja wie der XML Baum ausschaut. Ich habe da die Produktgruppen mit den einzelnen Produkten.
Ich möchte am Anfang erstmals nur alle verfügbaren Produktgruppen angezeigt lassen bekommen.
Da ich dies ja in <a href einbinde werden diese ja als Links wiedergegeben.
Sobald dann einer dieser Links geklickt wird ( also eine Produktgruppe ) soll der dazugehörige Inhalt angezeigt werden.
|
|
|
|
|
|
|
|
Ähnliche Themen |
[solved]Einlesen und ausgeben einer TXT Datei.
XML mit Javascript parsen
xml laden und parsen in *.as
Parsen von datei php
[PHP]Problem bei Parsen vom XML-Daten
Hilfe beim Parsen einer XML
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|