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 27-03-2008, 15:50
jens2
 Newbie
Links : Onlinestatus : jens2 ist offline
Registriert seit: Mar 2008
Beiträge: 6
jens2 ist zur Zeit noch ein unbeschriebenes Blatt
Thumbs up simplexml [erledigt]

Hallo zusammen.

Kennt sich jemand mit simplexml aus?
Dies gibt es ab PHP5, womit ich auch arbeite.
Damit kann ich ein XML Dokument in ein simplexmlobject transferieren.

Mein Problem ist folgendes:
Ich möchte eine XML dynmisch auswerten und dessen Knotenpunkte ab einem bestimmten Knoten mit dessen Wert in ein Array packen. Die Anzahl und Namen der Knotenpunkte kenn ich nicht.

XML:
Code:
<root>
  <?xml version="1.0" encoding="utf-8"?>
<root>
    <formFields>
        <field>
            <name>
                vorname
            </name>
            <errorMessage>
                Value Vorname is Wrong!
            </errorMessage>
            <validation>
                <length_min>
                    2
                </length_min>
                <length_max>
                    30
                </length_max>
                <alpha/>
                <number/>
                <test1/>
            </validation>
        </field>
        <field>
            <name>
                nachname
            </name>
            <errorMessage>
                Value Nachname is Wrong!
            </errorMessage>
            <validation>
                <length_min>
                    2
                </length_min>
                <length_max>
                    40
                </length_max>
                <alpha/>
                <number/>
                <test2/>
            </validation>
        </field>
        <field>
            <name>
                Ort
            </name>
            <errorMessage>
                Value Ort is Wrong!
            </errorMessage>
            <validation>
                <length_min>
                    2
                </length_min>
                <length_max>
                    50
                </length_max>
                <alpha/>
                <number/>
                <test3/>
            </validation>
        </field>
    </formFields>
</root>
PHP:
PHP-Code:
    $xmlPath =  dirname(__FILE__)."\\test.xml";
    
$objXML = @simplexml_load_file($xmlPath);  //@ = Hide PHP Warnings for this function
      
    
$formFields[] = array();
    
$validateClasses[] = array();
    
$i 0//count var
    
$j 0//count var, too
    
    
    
if(is_object($objXML)) {
      
//$objXML is an object!
      
      //all childs from the formFields Node
        
foreach($objXML->formFields->field as $field) { 
        
//echo "<br><br><b>FormFeld Name:</b> " . $field->name;
        
$formFields[$i][name] = $field->name;
          
//echo "<br><b>FormFeld errorMessage:</b> " . $field->errorMessage; 
        
$formFields[$i][errorMessage] = $field->errorMessage
        
        
//get all validation child nodes -> classes
        
foreach($field->validation->children() as $field2) {
          
//echo "<br><b>Name des Validation-Kind-Knotens:</b> " . $field2->getName();
          
$validateClasses[$j][$field2->getName()] = $field2;   
          
$j++;
        }
$j=0;
        
        
$formFields[$i][validation] = $validateClasses;
        
$i++;    
        echo 
"<br><br>";
      }
    }else {
      echo 
"<br>XML konnte nicht geladen werden!";
    }
echo 
"<pre>"print_R($formFields); echo "</pre>"
Wenn man sich das Ergebnis im Browser anschaut, dann sieht man eine Struktur des Arrays. Dies schaut folgendermaßen aus:

Code:
Array
(
    [0] => Array
        (
            [name] => SimpleXMLElement Object
                (
                    [0] => 
                vorname
            
                )

            [errorMessage] => SimpleXMLElement Object
                (
                    [0] => 
                Value Vorname is Wrong!
            
                )

            [validation] => Array
                (
                    [0] => Array
                        (
                            [length_min] => SimpleXMLElement Object
                                (
                                    [0] => 
                    2
                
                                )

                        )

                    [1] => Array
                        (
                            [length_max] => SimpleXMLElement Object
                                (
                                    [0] => 
                    30
                
                                )

                        )

                    [2] => Array
                        (
                            [alpha] => SimpleXMLElement Object
                                (
                                )

                        )

                    [3] => Array
                        (
                            [number] => SimpleXMLElement Object
                                (
                                )

                        )

                    [4] => Array
                        (
                            [test1] => SimpleXMLElement Object
                                (
                                )

                        )

                )

        )

    [1] => Array
        (
            [name] => SimpleXMLElement Object
                (
                    [0] => 
                nachname
            
                )

            [errorMessage] => SimpleXMLElement Object
                (
                    [0] => 
                Value Nachname is Wrong!
            
                )

            [validation] => Array
                (
                    [0] => Array
                        (
                            [length_min] => SimpleXMLElement Object
                                (
                                    [0] => 
                    2
                
                                )

                        )

                    [1] => Array
                        (
                            [length_max] => SimpleXMLElement Object
                                (
                                    [0] => 
                    40
                
                                )

                        )

                    [2] => Array
                        (
                            [alpha] => SimpleXMLElement Object
                                (
                                )

                        )

                    [3] => Array
                        (
                            [number] => SimpleXMLElement Object
                                (
                                )

                        )

                    [4] => Array
                        (
                            [test1] => SimpleXMLElement Object
                                (
                                )

                            [test2] => SimpleXMLElement Object
                                (
                                )

                        )

                )

        )

    [2] => Array
        (
            [name] => SimpleXMLElement Object
                (
                    [0] => 
                Ort
            
                )

            [errorMessage] => SimpleXMLElement Object
                (
                    [0] => 
                Value Ort is Wrong!
            
                )

            [validation] => Array
                (
                    [0] => Array
                        (
                            [length_min] => SimpleXMLElement Object
                                (
                                    [0] => 
                    2
                
                                )

                        )

                    [1] => Array
                        (
                            [length_max] => SimpleXMLElement Object
                                (
                                    [0] => 
                    50
                
                                )

                        )

                    [2] => Array
                        (
                            [alpha] => SimpleXMLElement Object
                                (
                                )

                        )

                    [3] => Array
                        (
                            [number] => SimpleXMLElement Object
                                (
                                )

                        )

                    [4] => Array
                        (
                            [test1] => SimpleXMLElement Object
                                (
                                )

                            [test2] => SimpleXMLElement Object
                                (
                                )

                            [test3] => SimpleXMLElement Object
                                (
                                )

                        )

                )

        )

)

Geändert von jens2 (28-03-2008 um 13:50 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 27-03-2008, 15:54
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Nicht umsonst steht da, dass es sich teilweise um Arrays und teilweise um Objekte handelt.
Mit Zitat antworten
  #3 (permalink)  
Alt 27-03-2008, 15:55
jens2
 Newbie
Links : Onlinestatus : jens2 ist offline
Registriert seit: Mar 2008
Beiträge: 6
jens2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard fortsetzung zu oben

Frage 1:
Warum macht er zwischen name und wert ein Ebene?
"[name] => SimpleXMLElement Object
(
[0] =>
vorname" ???
Wenn ich "$formFields[0][name]" ausgebe, bekomm ich den Namen.
Wenn ich "$formFields[0][name][0]" ausgebe, bekomm ich den Namen auch.
Warum gibt er nicht "[name] => vorname" aus?

Frage 2:
$formFields[0][validation] ist ein Array, stimmt auch.
$formFields[0][validation][0] sollte nun der 1. Knoten in dem Knoten Validation sein. Ist aber auch ein Array, selbe Problem wie Frage 1.
$formFields[0][validation][0][0] sollte dann aber laut debug "length_min" sein, aber er gibt nix aus.

Ich hoffe ihr versteht mein Problem, den Langsam blicke ich net mehr druch. Vielleicht habe in PHP und Arrays auch was falsch verstanden. Ich wäre für jeden Tipp dankbar.

Gruß Jens2
Mit Zitat antworten
  #4 (permalink)  
Alt 27-03-2008, 15:57
jens2
 Newbie
Links : Onlinestatus : jens2 ist offline
Registriert seit: Mar 2008
Beiträge: 6
jens2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo unset.

Danke für deine Antwort. Gibt es vielleicht eine andere Möglichkeit
eine sauberes Array zu erzeugen? Denn es soll ja später dynmisch in jedes Feld gehen und dessen Infos extrahieren.

Gruß Jens2
Mit Zitat antworten
  #5 (permalink)  
Alt 27-03-2008, 15:58
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Wer? Das Array? Das kann es alleine schon mal gar nicht. Ich weiß auch nicht, wo das Problem ist zu prüfen, ob es sich um ein Array oder ein Objekt handelt und das ganze entsprechend abzuarbeiten.
Mit Zitat antworten
  #6 (permalink)  
Alt 27-03-2008, 16:02
jens2
 Newbie
Links : Onlinestatus : jens2 ist offline
Registriert seit: Mar 2008
Beiträge: 6
jens2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das Problem ist, das ich nicht die werte des validation Arrays ausgeben kann.

$formFields[0] = Nr des feldes "field"
$formFields[0][name] ODER $formFields[0][0] soll den namen ausgeben->stimmt;
$formFields[0][validation][0] soll mir "length_min" ausgeben, und da scheiter ich dran.
Mit Zitat antworten
  #7 (permalink)  
Alt 27-03-2008, 16:09
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Jens2
Bitte noch die Regeln bezüglich Formatierung von Quellcode nachlesen und umsetzen (zumindest für den PHP-Teil deines Codes).
Danke und Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #8 (permalink)  
Alt 27-03-2008, 17:50
jens2
 Newbie
Links : Onlinestatus : jens2 ist offline
Registriert seit: Mar 2008
Beiträge: 6
jens2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke für Eure Hilfe.
Habe das Problem gelöst.
Danke nochmal an Unset.

Gruß Jens2
Mit Zitat antworten
  #9 (permalink)  
Alt 27-03-2008, 21:20
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Trag doch bitte für die Nachwelt noch deine Lösung bzw. Erkenntnis nach
Mit Zitat antworten
  #10 (permalink)  
Alt 28-03-2008, 13:49
jens2
 Newbie
Links : Onlinestatus : jens2 ist offline
Registriert seit: Mar 2008
Beiträge: 6
jens2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe bei der Wertzuweisung einen leeren String mitgegeben
also $test = "".$array[index][bla][blub];
Dadurch war das simplexml_object weg und keine leerzeilen mehr da.
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 22:04 Uhr.