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:
PHP:
Wenn man sich das Ergebnis im Browser anschaut, dann sieht man eine Struktur des Arrays. Dies schaut folgendermaßen aus:
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-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>";
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 ( ) ) ) ) )
Kommentar