php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > XML
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


XML Hier passt alles rein, was das Thema XML (XSLT, JSON etc...) betrifft, auch in Verbindung mit PHP

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 17-07-2007, 19:59
GELight
 Registrierter Benutzer
Links : Onlinestatus : GELight ist offline
Registriert seit: Sep 2004
Beiträge: 243
GELight ist zur Zeit noch ein unbeschriebenes Blatt
GELight eine Nachricht über ICQ schicken
Standard XML und PHP4

Nabend alle zusammen,

Ich hab ein kleines Problem mit dem laden einer XML.
Wir haben bislang das simpleXML von PHP5 verwendet und auch unsere Scripte so angepasst, dass sie das von simpleXML standardmäßig zurück gegebene Array nutzen.
Dieses Array hat ja einenbestimmten Aufbau....

Nun wurde von Anfang an nicht richtig beachtet, dass das simpleXML nur unter PHP5 geht und wir somit Fehler unter PHP4 bekommen.

Gibts evtl. etwas vergleichbares, was ich für das Einladen der XMLs nutzen kann, was mir ein schönes klares Array der XML Daten zurück liefert? Wir haben es jetzt mal mit einer anderen Klasse namens "xml_line" versucht aber diese gibt ein eigenartiges Array zurück, was wir nicht wirklich gebrauchen können.

Könnt Ihr mir evtl. noch etwas gutes vorschlagen, womit ich meine XML einladen kann und von dieser ein schönes Array zurück bekomme, was möglichst nicht so krass PHP Versionsabhängig ist?

Dank euch... Mario
Mit Zitat antworten
  #2 (permalink)  
Alt 17-07-2007, 23:25
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

evtl. dom oder einfach nach "xml2array" googlen und verschiedene implementierungen anschauen. die skripte sind aber immer versionsabhängig. beachte, dass php 4 aber sowieso bald nicht mehr unterstützt wird.
Mit Zitat antworten
  #3 (permalink)  
Alt 17-07-2007, 23:33
GELight
 Registrierter Benutzer
Links : Onlinestatus : GELight ist offline
Registriert seit: Sep 2004
Beiträge: 243
GELight ist zur Zeit noch ein unbeschriebenes Blatt
GELight eine Nachricht über ICQ schicken
Standard PHP und XML

Genau aus diesem Grund versuche ich auch eine Versionsunabhängige Sache hinzubekommen oder zu nutzen.
Am liebsten wäre mir ein eigenes Script, was über die Grundfunktionen von PHP die XML einliest und mir ein eigenes Array zurück gibt von der XMl. Allerdings bekomm ich das nicht hin mit den regExpr. Das ist mir irgendwie ne Spur zu hoch alles...

Leider laufen ein großteil der PublicServer auf <PHP5... und diese werden wohl so schnell auch nicht umgestellt. Es sei denn die setzen neue Server auf. Hatte mich da mal mit einem von 1&1 und unabhängig mit einem von Strato unterhalten.

Daher versuche ich halt ein mehr oder weniger rutimentäres Script mir selbst zu schreiben, welches halt " möglichst immer" funktioniert, wenn man die Grundlegenden PHP Funktionen nutzt um es zu schreiben.

Ich werd mal nach DOM oder xml2array suchen...

Mario
Mit Zitat antworten
  #4 (permalink)  
Alt 17-07-2007, 23:39
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Allerdings bekomm ich das nicht hin mit den regExpr.
das wäre die einzige und gleichzeitig schlechteste lösung.
Zitat:
Daher versuche ich halt ein mehr oder weniger rutimentäres Script mir selbst zu schreiben, welches halt " möglichst immer" funktioniert, wenn man die Grundlegenden PHP Funktionen nutzt um es zu schreiben.
das ist nicht sinnvoll, aber das habe ich dir schon gesagt, als du deine anwendung safe mode tauglich machen wolltest. sehr viele anwendungen werden momentan ausschließlich für php 5 entwickelt, weil zum einen zukunft hat und zum anderen viele freiheiten bietet. versuchen, alles abzudecken, nimmt dir beide möglichkeiten.

http://php.net/
letzte news.
Mit Zitat antworten
  #5 (permalink)  
Alt 18-07-2007, 00:18
GELight
 Registrierter Benutzer
Links : Onlinestatus : GELight ist offline
Registriert seit: Sep 2004
Beiträge: 243
GELight ist zur Zeit noch ein unbeschriebenes Blatt
GELight eine Nachricht über ICQ schicken
Standard PHP und XML

Angenommen ich will mich nochmal selbst am einlesen einer XML versuchen.... wie könnte man dabei am besten rann gehen, wenn man die Boardeigenen Mittel vonPHP nutzt? ( also keine fertigen Versionsgebundenen Klassen )

Ich weiß, dass es keinen Sinn macht zu versuchen alles abzudecken. Das ist mir klar... und auch nicht schaffbar.
Aber mein System sollte sicherheitshalber halt auf PHP4 UND PHP5 laufen. Das liegt einfach daran, dass zwar PHP5 > die Zukunft ist aber dementsprechend die Anbieter noch lange nicht mit Ihren Servern nachziehen müssen. Strato zB. lassen ihre derzeitigen SharedPublicServer so wie sie sind. Und sehr viele Kunden, die wir haben, sind nunmal auf diesen drauf. Das ist eigentlich der hauptgrund, warum ich diesen Mehraufwand betreiben will/muss.
Theoretisch liegts derzeit nur noch an dem laden der XMLs.

Mario
Mit Zitat antworten
  #6 (permalink)  
Alt 18-07-2007, 22:51
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
wie könnte man dabei am besten rann gehen, wenn man die Boardeigenen Mittel vonPHP nutzt?
die antwort hast du weiter oben schon selbst gefunden.
Zitat:
... aber dementsprechend die Anbieter noch lange nicht mit Ihren Servern nachziehen müssen.
das werden sie tun, sobald ihnen klar ist, dass php4 nicht mehr erneuert wird. allein schon aus sicherheitsgründen.
Zitat:
Und sehr viele Kunden, die wir haben, sind nunmal auf diesen drauf.
und sie haben recht, dazu geraten zu werden, bessere hosting angeboten zu nutzen (z.b. flexiblere. viele bieten 4 und 5 parallel an).
Zitat:
Theoretisch liegts derzeit nur noch an dem laden der XMLs.
muss es denn xml sein?
Mit Zitat antworten
  #7 (permalink)  
Alt 18-07-2007, 23:27
GELight
 Registrierter Benutzer
Links : Onlinestatus : GELight ist offline
Registriert seit: Sep 2004
Beiträge: 243
GELight ist zur Zeit noch ein unbeschriebenes Blatt
GELight eine Nachricht über ICQ schicken
Standard PHP und XML

XML ist einfach das einfachste und sauberste für das was wir machen.
Ich hab über http://php.net/ ein super Script ( ne kleine Klasse ) gefunden, die ich nutzen kann. Die gibt mal ein schön sauberes Array zurück. Das gefällt mir.

Ich musste die XML auch nur einladen. Ich will nichts speichern oder gar editieren. Dafür ist die Datenbank da.


gruß Mario

PS: Danke nochmal für den Link...
Mit Zitat antworten
  #8 (permalink)  
Alt 23-07-2007, 13:08
the_weird
 Newbie
Links : Onlinestatus : the_weird ist offline
Registriert seit: Apr 2002
Beiträge: 18
the_weird ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich suche auch schon ewig nach einer einfach lösung eine XML-Datei nur auszulesen, da ich auch den Rest über die Datenbank machen will.

jedoch finde ich gar nichts dazu .

Das Problem an meiner XML-Datei ist, dass die meisen Script nur ein Feld lesen können, meine XML-Datei sieht aber wie folgt aus
PHP-Code:
<gruppen>
  <
team>
    <
person>
      <
person_name>name</person_name>
      <
person_id>name-ID</person_name>
    </
person>
    <
person>
      <
person_name>name</person_name>
      <
person_id>name-ID</person_name>
    </
person>
    <
person>
      <
person_name>name</person_name>
      <
person_id>name-ID</person_name>
    </
person>
  </
team>
  <
gruppe_name>name<gruppe_name>
  <
gruppe_id>id<gruppe_id>
</
gruppen
Mit Zitat antworten
  #9 (permalink)  
Alt 23-07-2007, 13:13
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von the_weird
Das Problem an meiner XML-Datei ist, dass die meisen Script nur ein Feld lesen können
Soll auf Deutsch heissen ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #10 (permalink)  
Alt 23-07-2007, 13:17
the_weird
 Newbie
Links : Onlinestatus : the_weird ist offline
Registriert seit: Apr 2002
Beiträge: 18
the_weird ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe ein paar Scripts getestet und dabei festgestellt, dass diese folgendes super lesen können:

PHP-Code:
<menu1>
  <
menu1_titel>Titel</menu1_titel>
  <
menu1_link>Link</menu1_link>
</
menu1>
<
menu2>
  <
menu2_titel>Titel</menu2_titel>
  <
menu2_link>Link</menu2_link>
</
menu2>
... 
sobald aber folgendes passiert:
PHP-Code:
<menu1>
  <
menu1a_titel>Titel</menu1a_titel>
  <
menu1a_link>Link</menu1a_link>
  <
menu1b_titel>Titel</menu1b_titel>
  <
menu1b_link>Link</menu1b_link>
  <
menu1c_titel>Titel</menu1c_titel>
  <
menu1c_link>Link</menu1c_link>
  ...
</
menu1>
... 
kommt aus der Class nur noch ein Fehler zurück (bis jetzt habe ich mit der Class CXml2Array.php gearbeitet)

//EDIT
kann auch daran liegen, dass ich erst seit kurzem mit XML arbeite.

Ich würde gerne einfach nur person_name, person_id, gruppe_name, gruppe_id in einer Funktion an die Datenbank geben.

Geändert von the_weird (23-07-2007 um 13:21 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 23-07-2007, 13:30
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

willst du die xml datei selbst auseinander nehmen - schau ins manual unter simplexml oder dom, google danach und besorge dir ein gutes buch zum thema.

mit deiner problembeschreibung kann ich nichts anfangen.
Mit Zitat antworten
  #12 (permalink)  
Alt 23-07-2007, 19:10
GELight
 Registrierter Benutzer
Links : Onlinestatus : GELight ist offline
Registriert seit: Sep 2004
Beiträge: 243
GELight ist zur Zeit noch ein unbeschriebenes Blatt
GELight eine Nachricht über ICQ schicken
Standard XML

Wie penizillin im 4 Post schon geschrieben hat... findest du auf http://php.net ein paar gute Scripte.
Eine Klasse war darunter, die ich jetzt auch nutze und die einem ein schön sauberes Array zurück gibt.

Einziger Nachteil ist mir jetzt aufgefallen... das Script berücksichtigt wohl im Gegensatz zur großen SimpleXML Klasse nicht das UTF8 Format einer Datei. Als Beispiel habe ich in einer meiner XMLs DB Querys um meine Tabellen mit grundlegenden Datensätzen zu füllen. Bei meinem jetzigen Script scheint er die Umlaute etc. nicht als UTF8 in die DB zu speichern sondern er speichert direkt die UTF8 Zeichen... also zb: Hauptmenü statt Hauptmenü. Als ich noch mit SimpleXML gearbeitet hatte, war das nicht so und er legte da auch die Umlaute ordentlich mit an. Da weiß ich leider noch nicht, was der Unterschied ist oder was ich gerade noch falsch mache.

Gruß Mario
Mit Zitat antworten
  #13 (permalink)  
Alt 23-07-2007, 19:18
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

vielleicht werden die umlaute richtig verarbeitet und nur falsch ausgegeben. musst du selbst herausfinden. ansonsten musst du schon eine problembeschreibung liefern, auf die man eingehen kann.

übrigens, welche klasse benutzst du denn nun?
Mit Zitat antworten
  #14 (permalink)  
Alt 23-07-2007, 19:24
GELight
 Registrierter Benutzer
Links : Onlinestatus : GELight ist offline
Registriert seit: Sep 2004
Beiträge: 243
GELight ist zur Zeit noch ein unbeschriebenes Blatt
GELight eine Nachricht über ICQ schicken
Standard XML

Oh klar.. wollt ich doch eh machen... total vergessen.. sorry.
Also das hier ist mal meine Klasse, die ich derzeit nutze.
Einzig und allein die get_xml_array() Methode und der Konstruktor sind von mir hinzugefügt wurden. Alles andere ist original so wie ich es gefunden hatte.

PHP-Code:
class xml
{   
    var  
$xml_pfad false;
    var  
$xml_stream false;
    
    var  
$arrOutput = array();
    var  
$resParser false;
    var  
$strXmlDatafalse;

// =================================================================================================
// KONSTRUKTOR
// =================================================================================================
    
function xml $xml_pfad )
    {
        if ( 
file_exists$xml_pfad ) )
        {
            
$this->xml_pfad $xml_pfad;
            
$this->xml_stream file_get_contents$xml_pfad );
        }
        else
        {
            echo 
$xml_pfad." nicht gefunden!";
        }
    }

// =================================================================================================
// RÜCKGABE DES XML ARRAY
// =================================================================================================
    
function get_xml_array()
    { 
        return 
$this->parse$this->xml_stream );
    }
    
// =================================================================================================
// XML PARSER
// =================================================================================================
    
function parse$strInputXML )
    {   
        
$this->resParser xml_parser_create ();
        
xml_set_object$this->resParser,$this );
        
xml_set_element_handler$this->resParser"tagOpen""tagClosed" );
        
        
xml_set_character_data_handler$this->resParser"tagData" );
        
        
$this->strXmlData xml_parse$this->resParser$strInputXML );
        if( !
$this->strXmlData )
        {
           die(
sprintf("XML error: %s at line %d",
            
xml_error_string(xml_get_error_code$this->resParser ) ),
            
xml_get_current_line_number$this->resParser ) ) );
        }
                       
        
xml_parser_free$this->resParser );
        
        return 
$this->arrOutput;
    }
// =================================================================================================
// TAG OPEN
// =================================================================================================
    
function tagOpen$parser$name$attrs )
    {
       
$tag=array( "name"=>$name"attrs"=>$attrs );
       
array_push$this->arrOutput$tag );
    }
// =================================================================================================
// TAG DATA
// =================================================================================================
    
function tagData$parser$tagData )
    {
       if( 
trim$tagData ) )
       {
            if( isset( 
$this->arrOutputcount$this->arrOutput )-]['tagData']))
            {
                
$this->arrOutputcount$this->arrOutput )-]['tagData'] .= $tagData;
            }
            else
            {
                
$this->arrOutputcount$this->arrOutput )-]['tagData'] = $tagData;
            }
       }
    }
// =================================================================================================
// TAG CLOSED
// =================================================================================================
    
function tagClosed$parser$name )
    {
       
$this->arrOutputcount($this->arrOutput )-]['children'][] = $this->arrOutputcount$this->arrOutput )-];
       
array_pop$this->arrOutput );
    }

Was die Ausgabe angeht, so muss ich mal schauen.
Was mich halt verwirrt ist, dass die Ausgabe auch in PHPMyAdmin falsch ist. Aber wenn ich den selben String ( die Querys ), die ich in meinem zurückgegebenen XML Array habe, über PHPMyAdmin selbst ausführen lasse, dann sind die Ausgaben korrekt.
Wie gesagt es hat sich einzig und allein die Klasse verändert, die die XML einliest... der Rest im System blieb gleich.

Mario
Mit Zitat antworten
  #15 (permalink)  
Alt 23-07-2007, 19:34
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

http://de.php.net/manual/en/ref.xml.php#xml.encoding
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

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