SimpleXML() - Wert eines Knotens ermitteln

erpelinho

Grünschnabel
Hallo mal ne Frage,

hab dat Forum schon durchforstet, aber nix passendes gefunden.

Es geht um das folgende Code-Gerüst.

In $array ist eine Liste von Schlüssel-Wert-Paaren, welche auf Grund einer XML-Datei erstellt wurde. Dabei entspricht der Schlüssel einem Knoten im XML-Dokument.

Wenn der Wert === true ist hat der Knoten im XML-Dokument keinen Wert und das Formular erhält den Wert "REQUIRED". Falls der Wert allerdings === false ist, soll der Wert in dem Formular (welches außen rum gebastelt ist) angezeigt werden, da er bereits in dem XML-Dokument existiert.

Code:
foreach($array as $key => $val) {
	if($val === true) {
	        # Feld muss noch gefüllt werden
	        print '<input type="text" name="'.$key.'" value="REQUIRED"><br />';
	} else {
		# Feld mit dem Inhalt des XML-Knotens ausgeben
		$res = $xml->xpath("'".$key."'");
		print '<input type="text" name="'.$key.'" value="'.$res[0].'"><br />';
	}
}

Da ich den Pfad davor nicht kenne, nutze ich XPath und suche einfach nach diesem Knoten.

Die Frage: Wie kann ich mir nun den Wert des Knotens ausgeben lassen, ohne dass ich da jetz mit ner while-Schleife o.ä. die möglichen Ergebnisse meiner XPath-Anfrage durchgehe? Den Knoten gibt es ja nur einmal.

Bei den anderen Fragen im Forum war immer noch der Zusatz zu sehen, aber sowas hab ich hier nicht, weil man dann schon im Blatt angekommen ist:
Code:
$res[0]->beschreibung

Vielen Dank
Eric
 
Ah hab et selber rausgefunden. zwo arrays...

Code:
foreach($array as $key => $val) {
	if($val === true) {
		# Feld muss noch gefüllt werden
		print '<tr><td width="60" align="right">'.$key.'</td><td><input type="text" size="50" name="'.$key.'" value="REQUIRED"></td></tr>';
	} else {
		# Feld nur so ausgeben
		$res = $xml->xpath('//'.$key.'');
		print '<tr><td width="60" align="right">'.$key.'</td><td><input type="text" size="50" name="'.$key.'" value="'.$res[0][0].'"></td></tr>';
	}
}
 
Zurück