Probleme mit xml Parser

mogmog

Erfahrenes Mitglied
Hallo alle zusammen,

ich habe mal wieder ein kleines bzw. ein größeres Problem.
Ich möchte eine XML-Datei Parsen und habe auch schon viel gelesen und Probiert ich komme aber auf kein brauchbares Ergebnis.

meine XML-Datei:
Code:
<?xml version="1.0"?> 

<main_element> 
	<element typ="1"> 
		<titel>Herr</titel> 
		<name>nachname</name> 
		<vorname>vorname</vorname> 
		<mail>vorname.nachname@mail.de</mail> 
	</element> 

	<element typ="2"> 
		<titel>Herr</titel> 
		<name>Mustermann</name> 
		<vorname>max</vorname> 
		<mail>max.mustermann@muster.de</mail> 
	</element> 

</main_element>

Nun zu meinem eigentlichen Problem ich möchte zum Beispiel von <element typ="1"> alle Children Elemente aufrufen und bearbeiten können (speichern).

Wobei der <element typ="2"> so bleiben soll wie er ist. Egal was ich bis jetzt versucht habe konnte ich nicht nutzen da ich wenn ich was erstellt habe immer alle Elemente ausgegeben bekommen hatte.

Ich würde mich freuen wenn einer eine Idee hat wie ich einzelne Elemente Bearbeiten kann? :confused: Ich könnte mir auch vorstellen die XML Struktur zu ändern.
 
Hy also ich habe einen Ansatz gefunden der sieht so aus:
PHP:
<?php 
	error_reporting(E_ALL);
	$max = '1'; // Einträge pro Seite einschränken
	$file = "xml.xml"; 

	if(!$xml = simplexml_load_file($file)){
	die("XML-Dokument kann nicht geparst werden!");
	}

	for($i=0;$i < $max ; $i++)
		{
		$titel= $xml->element[$i]->titel;



		echo utf8_decode($titel).'<br/>';
		} 
?>

OK das funktioniert schon mal nur wie kann ich jetzt genau sagen ich will den titel von element typ="1" bzw. typ="2"?
ich habe Übrigens hier den Ansatz hier: http://www.tutorials.de/forum/php/248442-xml-datei-auslesen.html her.
 
Zuletzt bearbeitet:
Schau mal hier mit?

PHP:
<?php
// require_once('Zend/Debug.php');

$xml = '<?xml version="1.0"?> 

<main_element> 
    <element typ="1"> 
        <titel>Herr</titel> 
        <name>nachname</name> 
        <vorname>vorname</vorname> 
        <mail>vorname.nachname@mail.de</mail> 
    </element> 

    <element typ="2"> 
        <titel>Herr</titel> 
        <name>Mustermann</name> 
        <vorname>max</vorname> 
        <mail>max.mustermann@muster.de</mail> 
    </element> 

</main_element>
';

$xmlObject = simplexml_load_string($xml);

foreach($xmlObject->element as $element)
{
    //Zend_Debug::dump($element);
    echo "<pre>";
    var_dump($element);
    echo "</pre>";    
}

?>
 
jo danke,

es alles geklappt =)

in dem ich in dem
<element> ein neues Feld ein gefügt habe mit type.
Code:
<main_element> 
    <element>
        <type>1</type>
        <titel>Herr</titel> 
        <name>nachname</name> 
        <vorname>vorname</vorname> 
        <mail>vorname.nachname@mail.de</mail> 
    </element>
</main_element>

dann habe ich einfach nach dem Type gefiltert und das hat auch sehr gut geklappt.
 
Zurück