Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] XML und PHP (https://www.delphipraxis.net/29162-%5Bphp%5D-xml-und-php.html)

Meflin 4. Sep 2004 21:04


[PHP] XML und PHP
 
Hi,
ich bin auf der suche nach guten php tuts zur xml benutzung! (falls möglich mit php 4.2 falls da xml schon möglich war) kennt jemand welche oder zumindest eines?

*MFG*

fiasko 4. Sep 2004 21:17

Re: [PHP] XML und PHP
 
Hallo,

also PHP hat zumindest seit Version 4.1.2 die libexpat Unterstützung (Parser), kann XML RPC (ok, nur experimantel), DOM XML via libxml (ok, auch nur experimental) und als XSLT Prozessor ist Sablon eingebunden.

(In der Version 4.2 dürfte das dann schon weniger experimental sein ;-)

Was willst du denn nun genau machen, bzw. was soll das Tutorial denn abhandeln?

Meflin 4. Sep 2004 22:26

Re: [PHP] XML und PHP
 
hi,
daten aus xmls lesen und daten in xmls schreiben, sozusagen als datenbank verwenden!

fiasko 4. Sep 2004 23:24

Re: [PHP] XML und PHP
 
Hallo,

dann wäre DOM XML der richtige Ansatz. Mit einem Tutorial kann ich leider nicht dienen... aber die Doku sieht eigentlich recht vielversprechend aus. Für Anregungen ist sicher auch ein nicht PHP DOM XML Tutorial tauglich.

Die haben nur mal die ganzen Funktionsnamen DOM angepaßt... das ist bei meiner PHP Version 4.1.2 noch nicht so... also lieber die Doku von Version 4.2 mal zu Rate ziehen.

MathiasSimmack 5. Sep 2004 07:28

Re: [PHP] XML und PHP
 
PHP und DOM-XML kannst du bisher vergessen. Wenn das XML-Dokument nicht zu umfangreich und zu verschachtelt ist, dann kann man mit SAX arbeiten. Aber die Funktionen von DOM reichen bisher noch lange nicht an einen typischen Parser wie bspw. MS-XML heran. Es ist bisher noch sehr umständlich, mit DOM-XML zu arbeiten.

mirage228 5. Sep 2004 08:02

Re: [PHP] XML und PHP
 
Zitat:

Zitat von MathiasSimmack
PHP und DOM-XML kannst du bisher vergessen. Wenn das XML-Dokument nicht zu umfangreich und zu verschachtelt ist, dann kann man mit SAX arbeiten. Aber die Funktionen von DOM reichen bisher noch lange nicht an einen typischen Parser wie bspw. MS-XML heran. Es ist bisher noch sehr umständlich, mit DOM-XML zu arbeiten.

Wie siehts da bei PHP5 aus? Hat sich da schon was geändert?

mfG
mirage228

MathiasSimmack 5. Sep 2004 08:44

Re: [PHP] XML und PHP
 
Ich habe es nur mit den RCs (Release Candidates) von PHP 5 probiert. Aber ich glaube, so viel hat sich auch in der Final nicht geändert. Keine Spur von XPath, um mal ein Beispiel zu nennen. Es war zwar leichter, umfangreichere und verschachtelte Dokumente zu parsen (dank XSL kein Thema), aber wenn du etwas manipulieren wolltest/musstest, warst du zu ganz schönen Bocksprüngen gezwungen.

Ich stand bspw. vor dem Problem, die Navigation der Dokumente nachträglich einfügen zu müssen, weil diese ja unabhängig vom Dokument sein sollte. Und alle evtl. vorhandenen Links auf XML-Dateien (wg. der Direktansicht im Browser) sollten automatisch durch das Skript geändert werden, damit vorher noch das PHP-Skript selbst drin steht. Sprich: Aus
Code:
[url="datei.xml"]klick[/url]
sollte dann bspw.
Code:
[url="loader.php?load=datei.xml"]klick[/url]
werden. Mit XPath wäre das kein Thema gewesen. Bei PHP5 musste ich umständlich durch das Dokument durch.

Nicht zu vergessen, dass man die DOM-Bibliothek erst mal selbst suchen musste. Eigentlich hatte ich erwartet, dass diese bereits im Paket dabei ist. Das ist bei der finalen v5 evtl. anders, aber bei den RCs war es nervig.

fiasko 5. Sep 2004 09:35

Re: [PHP] XML und PHP
 
Zitat:

Zitat von MathiasSimmack
Ich habe es nur mit den RCs (Release Candidates) von PHP 5 probiert. Aber ich glaube, so viel hat sich auch in der Final nicht geändert. Keine Spur von XPath, um mal ein Beispiel zu

Ich hab zwar mit den PHP XML Erweiterungen noch nicht gearbeitet - aber schon zu hauf mit der libxml. Und die unterstützt XPath! Und wenn ich mir die Doku anschaue sind da auch die Funktionen alle dafür gewrappt (xpath_new_context, xpath_eval). Die libxml wird sehr viel verwendet - so Grottenschlecht kann sie also nicht sein ;-)

Chewie 5. Sep 2004 09:51

Re: [PHP] XML und PHP
 
Außerdem: Soweit ich weiß, war die Eingliederung von libxml in PHP5 der Hauptgrund dafür, dass die Final von PHP5 so lange auf sich warten ließ. In den RCs war die also noch nicht dabei.

Meflin 5. Sep 2004 10:25

Re: [PHP] XML und PHP
 
thx, ich werd mich mal reinlesen und sehen obs für mich vorteilhafter wie sql ist!

MathiasSimmack 5. Sep 2004 10:28

Re: [PHP] XML und PHP
 
Zitat:

Zitat von Chewie
Außerdem: Soweit ich weiß, war die Eingliederung von libxml in PHP5 der Hauptgrund dafür, dass die Final von PHP5 so lange auf sich warten ließ. In den RCs war die also noch nicht dabei.

Das wäre was positives. Ich meine, privat ist es ja kein Problem. Da holt man sich die notwendigen Bibliotheken, und gut. Aber wenn man eine Homepage auf einem fremden Server hat, dann muss man darauf vertrauen, dass der Hoster bspw. PHP aktualisiert. Aber ob er auch externe Bibliotheken einbindet, das ist doch eher zu bezweifeln. So gesehen ist es immer gut, wenn die Dinge gleich enthalten sind.

fiasko 5. Sep 2004 10:33

Re: [PHP] XML und PHP
 
Zitat:

Zitat von MathiasSimmack
Aber ob er auch externe Bibliotheken einbindet, das ist doch eher zu bezweifeln. So gesehen ist es immer gut, wenn die Dinge gleich enthalten sind.

Hä? Bis auf ein paar Core Funktionen besteht doch PHP fast nur aus Wrapper Funktionen. Es wäre auch ziemlich sinnlos das Rad noch mal neu zu erfinden wenn's für vieles schon fertige lib's gibt.

MathiasSimmack 5. Sep 2004 10:43

Re: [PHP] XML und PHP
 
Das habe ich nicht gemeint.

Ich wollte damit sagen, dass ein Hoster meist bloß das Grundpaket installiert. Darum ist es immer besser, wenn die benötigten Bibliotheken bereits in diesem Grundpaket enthalten sind. Du kannst nicht erwarten und verlangen, dass der Hoster wg. dir noch Sonderbibliotheken zusammensucht und installiert.

Edit: Schau dir doch Borland an. Wenn du eine heutige Delphi-Version erwirbst, dann sind viele Bibliotheken bereits von anderen Gruppen geschrieben worden. Nimm den Theme-Manager, der wohl bei D7 dabei ist. Borland weiß also auch, dass externe Gruppen u.U. bessere Arbeit leisten (weil sie sich auf ein Thema konzentrieren) und holt sich dann bloß noch das Ergebnis.
Jetzt stell dir vor, du kaufst Delphi und würdest auf der CD eine Textdatei mit Links der Bibliotheken finden, die du dir selbst noch holen und installieren musst.



Aber mach doch mal ein Beispiel mit der "libxml". Mit der habe ich bisher nämlich noch nicht gearbeitet. :oops:

Meflin 5. Sep 2004 10:48

Re: [PHP] XML und PHP
 
also die domxml ist bei meinem hoster installiert, daher ist das kein problem. nur bräucht ich ein paar beispiele zum arbeiten damit, mit puren dokus kann ich am anfang wenig anfangen :|

fiasko 5. Sep 2004 10:50

Re: [PHP] XML und PHP
 
Zitat:

Zitat von MathiasSimmack
Ich wollte damit sagen, dass ein Hoster meist bloß das Grundpaket installiert. Darum ist es immer besser, wenn die benötigten Bibliotheken bereits in diesem Grundpaket enthalten sind. Du kannst nicht erwarten und verlangen, dass der Hoster wg. dir noch Sonderbibliotheken zusammensucht und installiert.

Sind sie aber nicht, ist ja auch quatsch so ne Redundanz :-).

Jetzt mal im ernst, das kommt ja am Ende auf das verwendete OS drauf an und wie PHP dafür packetiert wurde. Unter Debian GNU/Linux z.B. gibt es einmal als Kern das Apache Modul oder die CGI-Variante und dann für die ganzen extra funktionen weitere Packete für LDAP,IMAP,MYSQl,......... die dann alle die Abhängigkeiten für die lib's mitbringen. Unter Winplöd ist es sicher anders gelößt - da herrscht ja Anarchie was DLL's betrifft ;-)


Zitat:

Zitat von MathiasSimmack
Aber mach doch mal ein Beispiel mit der "libxml". Mit der habe ich bisher nämlich noch nicht gearbeitet. :oops:

Wie gesagt... kommt halt auch aus der GNU/Linux Ecke und weiß garnicht ob es da "normale" Portierungen für Win32 gibt.

fiasko 5. Sep 2004 11:31

Re: [PHP] XML und PHP
 
Hallo,

ich hab mir das mal angeschaut, hier ein kleines Beispiel was dir vielleicht hilft:

Code:
<?php                                                                                                                        
                                                                                                                               
header('Content-Type: text/plain');                                                                                          
                                                                                                                               
$xpath = "//text[@id='3']";                                                                                                  
                                                                                                                               
/* Datei einlesen */                                                                                                           
$doc  = xmldocfile('test.xml');                                                                                              
                                                                                                                               
                                                                                                                               
echo "XPath \"$xpath\":\n\n";                                                                                                
                                                                                                                               
/* Neuen Context erstellen fuer XPath */                                                                                       
$con  = $doc->xpath_new_context();                                                                                          
                                                                                                                               
/* XPath auswerten ($nodes ist Klasse XPathObject) */                                                                         
$nodes = $con->xpath_eval_expression($xpath);                                                                                
                                                                                                                               
/* Die Ergebnismenge ausgeben... */                                                                                           
foreach($nodes->nodeset as $node) {                                                                                           
    echo "\t",$node->tagname,":\n";                                                                                          
                                                                                                                               
    /* Die Kind-Knoten nach dem Text-Node durchsuchen... */                                                                   
    foreach(domxml_children($node) as $child) {                                                                               
        if ($child->type == XML_TEXT_NODE) {                                                                                   
            echo "\t\t",$child->content,"\n";                                                                                
        }                                                                                                                     
    }                                                                                                                         
}                                                                                                                             
                                                                                                                               

/* Zum Schluss noch entwas hinzufuegen... */
$root = $doc->root();                                                                                  
$node = $root->new_child('mytest');                                                                                          
$node->set_attribute('ip',$REMOTE_ADDR);                                                                                      
                                                                                                                               
echo "\n\n************************************\n\n";                                                                          
echo $doc->dumpmem();
XML-Code:
<root>                                                                                                                        
    <text id="1">eins</text>                                                                                                  
    <text id="2">zwei</text>                                                                                                  
    <text id="3">drei</text>                                                                                                  
</root>
Als ergebnis kommt dann sowas raus:

Code:
XPath "//text[@id='3']":

   text:
      drei


************************************

<?xml version="1.0"?>
<root>
    <text id="1">eins</text>
    <text id="2">zwei</text>
    <text id="3">drei</text>
<mytest ip="10.0.0.21"/></root>
Das ganze ist aber mit PHP 4.1.2 (!) getestet...


[edit]
Nur ein Typo im PHP-Code gefixt...
[/edit]

MathiasSimmack 5. Sep 2004 11:40

Re: [PHP] XML und PHP
 
Hey, wenn das ein Beispiel für Linux ist, dann könnte das bei meinem Hoster sogar laufen. Muss ich doch glatt mal ausprobieren. :)

Edit: "xmldocfile" kennt die PHP-Version auf dem Server meines Hosters nicht.

Meflin 5. Sep 2004 16:23

Re: [PHP] XML und PHP
 
merci werds ausprobieren
@mathias: versuchs mal mit domxml_open_file() (siehe http://de3.php.net/manual/de/print/ref.domxml.php veraltete funktionen!)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz