cloner un arbre-cloneNode et sauver l'arbre

Mammouth du PHP | 1311 Messages

30 nov. 2005, 21:55

salut
voici mon fichier xml

Code : Tout sélectionner

<?xml version="1.0" encoding="utf-8" ?> <agences> <agence id="1"> <latitude>45.12</latitude> <longitude>05.42</longitude> <enseigne>APE</enseigne> <adresse>3, rue Emile Zola</adresse> <codeP>38100</codeP> <ville>Grenoble</ville> <telephone>04 76 43 22 27</telephone> <mail>echo</mail> <fax>echo</fax> <description>echo</description> </agence> <agence id="2"> <latitude>45.27</latitude> <longitude>04.22</longitude> <enseigne>APE</enseigne> <adresse>Z.I. Necker - Rue Necker</adresse> <codeP>42000</codeP> <ville>Saint Etienne</ville> <telephone>04 77 25 02 24</telephone> <mail>echo</mail> <fax>echo</fax> <description>echo</description> </agence> </agences>
j'essaye de cloner et de modifier un arbre agence mais mon code clone les deux arbres :?
	public function InsertAgence(Agence $var)
	{
		$agence=$this->xml->documentElement;
		foreach ($agence->childNodes as $groupe)
		{
			if($groupe->nodeType !=XML_TEXT_NODE)
				$oldId=$groupe->getAttribute('id');
		}
		$copie=$agence->cloneNode(TRUE);
		$copie->setAttribute('id',$oldId+1);
		//echo $copie->childNodes->length;
		
		foreach ($copie->childNodes as $val)
		{
			//print_r($val->nodeValue);
			if($val->nodeType !=XML_TEXT_NODE)
				echo $val->nodeValue."<br/>";
			/*if($cle==$copie->childNodes->nodeName)
				$copie->childNodes->nodeValue = $val;*/
		}
		//$new=$copie->appendChild();
	}
Modifié en dernier par jeff le 01 déc. 2005, 20:06, modifié 1 fois.

Mammouth du PHP | 1311 Messages

01 déc. 2005, 14:42

bon j'ai trouver merci pour ceux qui se sont interresser au pb
agence=$this->xml->documentElement;
		$oldID=0;
		foreach ($agence->childNodes as $groupe)
		{
			if($groupe->nodeType !=XML_TEXT_NODE)
				$oldId=$groupe->getAttribute('id');
			
		}
		$copie=$agence->childNodes->item($oldId+1);
		//echo $copie->nodeName.'<br/>';
		$new=$copie->cloneNode(TRUE);

Mammouth du PHP | 1311 Messages

01 déc. 2005, 20:07

bon maitenat j'ai un probleme pour sauver mon arbre
j'ai
Fatal error: Call to undefined method DOMElement::save()
je ne comprend pas pourquoi
public function InsertAgence(Agence $ag)
	{
		$agence=$this->xml->documentElement;
		$oldID=0;
		foreach ($agence->childNodes as $groupe)
		{
			if($groupe->nodeType !=XML_TEXT_NODE)
				$oldId=$groupe->getAttribute('id');
			//on recupere le plus grand id
		}
		$copie=$agence->childNodes->item($oldId+1);
		//echo $copie->nodeName.'<br/>';
		
		//on duplique la derniere agence
		$new=$copie->cloneNode(TRUE);
		//on attribut le nouvel id a la nouvelle agence
		$new->setAttribute('id',$oldId+1);
		foreach ($new->childNodes as $val)
		{
			//print_r($val->nodeValue);
			if($val->nodeType !=XML_TEXT_NODE)
					$val->nodeValue=$ag[$val->nodeName];
					//echo $ag[$val->nodeName].'<br/>';	
		}
		$agence->appendChild($new);
		$this->xml->save($this->file);
	}