php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.04.2007, 18:01  
Erfahrener Benutzer
 
Registriert seit: 28.11.2004
Beiträge: 305
nieselfriem ist zur Zeit noch ein unbeschriebenes Blatt
Standard SAX-Parser und Zugriff auf Attribute

HAllo ich habe mit PHP einen kleinen Parser mittels SAX abgetippelt.
Mein Problem ist nun der Zugriff auf die Attribute. Diese werden ja
Code:
function elem_start($xml_parser, $name, $attr)
hier in $attrib gespeichert. Ist wohl ein assoziatives Array. Nun wie greif ich auf einzelne Elemente zu. bei einem normalen mach ich das ja über $array[index]. Nur wie hier.

Danke für den Tipp!

Gruß niesel
nieselfriem ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.04.2007, 18:46  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo nieselfriem,

heißt das, du hast die JAVA-Sourcen in PHP abgetippt? Wenn ja, muss das Verhalten hier identisch sein und du musst entsprechend auf das Attribut-Array zugreifen. Falls das nicht funktioniert, hast du eine andere Implementierung, die mir so nicht bekannt ist.

Etwas mehr Quelltext und Informationen wären ohnehin nicht schlecht.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 09.04.2007, 18:53  
Erfahrener Benutzer
 
Registriert seit: 28.11.2004
Beiträge: 305
nieselfriem ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nö nö! Das ist aus einem PHP-Buch. Sicherlich ist die SAX-Implementierung von JAVA "kopiert" worden (Laut Buch) aber hier mal der ganze Quellcode.
PHP-Code:
<?php
/*
 * Created on 09.04.2007
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
 
echo '<html><title>Test</title><body>';
 function 
elem_start($xml_parser$name$attr)
 {
     foreach(
$attr as $v)
         {
             echo 
$v;
         }
         for (
$i=0;$i<=2;$i++)
         {
             echo 
$attr[$i];
         }
     if (
$name=="form")
     {
         echo 
'<form action="index.php" metod="post">';
         
xml_set_character_data_handler($xml_parser"cdata_ausgeben");
         
     }
 
     if (
$name=="textarea")
     {
         echo 
"<textarea cols=\"$v\", lines=\"$v\">";//problem ich möchte z.B. lines=20 und cols=20.
         
xml_set_character_data_handler($xml_parser"cdata_ausgeben");
         
     }
     else 
     {
         
xml_set_character_data_handler($xml_parser"cdata_nichtausgeben");
     }
 }
 
 function 
elem_ende($xml_parser$name)
 {
     if (
$name=="form")
     {
         echo 
'</form>';
     }
     
     if (
$name=="textarea")
     {
         echo 
'</textarea>';
     }
 }

 function 
cdata_nichtausgeben($xml$daten)
 {
 }
 
 function 
cdata_ausgeben($xml$daten)
 {
     echo 
htmlspecialchars($daten);
 }
 
 
$xml_parser=xml_parser_create();
 
xml_parser_set_option ($xml_parserXML_OPTION_CASE_FOLDING0);
 
xml_set_element_handler($xml_parser"elem_start""elem_ende");
 
xml_set_character_data_handler($xml_parser"cdata");
 
$daten=file_get_contents("form.xml");
 
xml_parse($xml_parser$datentrue);
 
xml_parser_free($xml_parser);
  echo 
'</body></html>';  
?>
nieselfriem ist offline  
Alt 09.04.2007, 20:05  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard Re: SAX-Parser und Zugriff auf Attribute

Zitat:
Zitat von nieselfriem
Ist wohl ein assoziatives Array. Nun wie greif ich auf einzelne Elemente zu. bei einem normalen mach ich das ja über $array[index]. Nur wie hier.
Genauso. Es ist ein normales Feld.
Gegenfrage: Was ist ein anormales Feld?
Schnulli ist offline  
Alt 09.04.2007, 20:19  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo nieselfriem,

ok, habe ich verstanden. Ich verstehe nur nicht ganz, was du mit dem XML-Parser bezwecken möchtest. Formular-Tags parsen ist meiner Meinung nach so nicht ohne weiteres und vor allem nicht generisch möglich.

Auf das Attribut-Array solltest du einfach durch Zufriff auf den Offset, der wie der Attribut-Name lautet, zugreifen können. Sollte das nicht helfen, sind print_r() und var_dump() deine Freunde.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 09.04.2007, 20:39  
Erfahrener Benutzer
 
Registriert seit: 28.11.2004
Beiträge: 305
nieselfriem ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich möchte ein tool basteln mit dem ich formulare erstellen kann. diese formulare sollen in einer xm-datei gespeichert werden und bei bedarf in ein html-formular umgewandelt werden

gruß niesel
nieselfriem ist offline  
Alt 09.04.2007, 20:52  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo nieselfriem,

wenn das so ist, solltest du dir zuerst Gedanken machen, was du überhaupt benötigst. Dein Beispiel und deine Fragen sehen mir so aus, als würdest du "einfach mal was schreiben" und hoffst, dass dir einer erklährt, was du machen musst. Da muss ich dich enttäuschen, so wird das nix. Stelle zunächst deine Anforderungen sauber zusammen, sprich wie deklarierst du ein Formular in XML und welche Features soll dein Transformator haben. Nur die Darstellung, dann ist das überflüssig? Evtl. Ausgabe inkl. Validierungs-Funktionen, dann musst du dir eine Meta-Beschriebung für diese Funktion einfallen lassen und die Validierung generisch für jedes Form-Element implementieren. Wenn es weitere Funktionen wie DataBinding sein sollen, muss man sich erst recht um ein Konzept kümmern.

Wenn du Lust und Zeit hast, schau dir mal mein Kontakt-Formular auf http://christian.zierpflanzenberatun...Seite=Tutorial an ("2. Implementierung des Kontakt-Formulars"), dort wird eine XML-Tag für jedes Form-Element im Template notiert und der Tag-Parser führt intern die Funktionen Darstellung und Validierung gemäß TagLibrary aus. Hier setze ich auch auf XML-HTML-Transformation, jedoch ohne XML-Parser von PHP, sondern einem eigenen, der auf strpos() und substr() basiert. Hast du dazu Fragen, dann stell sie einfach.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 09.04.2007, 21:17  
Erfahrener Benutzer
 
Registriert seit: 28.11.2004
Beiträge: 305
nieselfriem ist zur Zeit noch ein unbeschriebenes Blatt
Standard

nein so ist das nicht, das ich einfach mal was schreiben will. Es geht mir einfad ersteinmal darum wie ich XML mittels PHP bearbeite. Für das Tool benötige ich sicherlich ein Konzept diverse Planungen usw. (UML kenn ich auch ) Ich versuche mit solchen Dingen mir an kleinen Beispielen evtl. Möglichkeiten kennen zu lernen
nieselfriem ist offline  
Alt 09.04.2007, 23:34  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard

Na jedenfalls greift man "normal" auf des Feld zu
PHP-Code:
<?php
function elem_start($xml_parser$name$attr)
{
    echo 
' A: '$attr['a'];
    echo 
' B: '$attr['b'];
}

function 
elem_ende($xml_parser$name) {}

$xml_parser=xml_parser_create();
xml_parser_set_option ($xml_parserXML_OPTION_CASE_FOLDING0);
xml_set_element_handler($xml_parser"elem_start""elem_ende");

$daten '<root a="1" b="2">xyz</root>';
xml_parse($xml_parser$datentrue);
xml_parser_free($xml_parser);
?>
Schnulli ist offline  
Alt 09.04.2007, 23:55  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo nieselfriem,

das ist doch schon mal eine gute Grundlage Ich verwende zwar den XML-Parser von PHP nicht, jedoch sind unter http://de3.php.net/manual/en/ref.xml.php einige "nette" Anwendungsbeispiele zu finden, die zeigen, wie das prinzipiell funktioniert.

Zitat:
Für das Tool benötige ich sicherlich ein Konzept diverse Planungen usw.
Und wie sieht das aus? Du musst doch auch für dein "Ausprobieren" ein Ziel haben? Hast du dir schon mal Gedanken gemacht, welche Anforderungen du an eine "XML-Beschreibungs-Sprache" für Formulare du haben möchtest? Was willst du bezwecken? Ich denke, dass man erst nach einer technischen Umsetzung suchen sollte, wenn man weiß, man steht bei A und möchte nach B. Vorher ist es sinnlos sich Gedanken zu machen, oder Zeit in Implementierungsdetails zu verschecken, wenn man nicht weiß, wo man steht und wo man hingehen möchte.

Hast du meinen Link angesehen?
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zugriff beschränken paper PHP Tipps 2008 9 04.05.2008 12:13
Direkten Zugriff auf Datenbank verhindern heyho PHP Tipps 2008 7 07.02.2008 11:41
Zugriff verweigert...? amenhotheb PHP Tipps 2006 4 11.07.2006 16:23
there is no attribute "BACKGROUND" ?? Fehler beim Buschdieb HTML, Usability und Barrierefreiheit 4 23.04.2006 21:58
Zugriff auf postgresql-db mit php PHP Tipps 2006 6 25.01.2006 09:29
BBCode Parser Mutatos PHP Tipps 2006 1 05.01.2006 12:19
gleichzeitiger Zugriff auf 2 Datenbanken dh1sbg PHP-Fortgeschrittene 3 27.12.2005 12:41
Objektorientierter Zugriff auf Multidimensionale Arrays PHP-Fortgeschrittene 31 26.11.2005 21:46
Verzeichnis (Dateien) schützen aber per PHP zugriff zulassen Server, Hosting und Workstations 2 16.10.2005 10:13
Wie Ordner und Inhalt vor unberechtigten Zugriff schützen Riot PHP Tipps 2005-2 30 06.10.2005 21:18
Primärschlüssel da. Wie an andere Attribute rankommen? Datenbanken 1 07.06.2005 10:27
Zugriff auf phpmyadmin PHP Tipps 2005 1 28.02.2005 18:41
Regex für attribute in quelltexten robo47 PHP Tipps 2005 6 27.01.2005 18:29
Template Parser Script Suckd PHP-Fortgeschrittene 2 11.07.2004 17:20

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php sax parser, sax beispiele, sax attribute, sax parser php, saxparser, mit sax parser auf xml zugreifen, bestimmte elemente auswählen saxparser, sax php attribute, sax parser tutorial php, sax parser einzelne daten zu holen php, saxparser tutorial, sax attributes, java sax zugriff über attribut, java sax zugriff attribut, php sax attributes, sax xml parser php attribut, attributes sax parser, sax: auf attribute zugreifen, sax parser php attributes, zugriff verweigert sax reader

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.