begin process at 2010 03 21 19:46:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Xml

 > XML MAPPING TO CLASS OBJECTS / CHARGEMENT / PARSING / MODIFICATION ET CREATION XML SIMPLIFIÉE

XML MAPPING TO CLASS OBJECTS / CHARGEMENT / PARSING / MODIFICATION ET CREATION XML SIMPLIFIÉE


 Information sur la source

Note :
10 / 10 - par 4 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Xml Classé sous :Xml, Mapping, Orm, Class Niveau :Expert Date de création :29/06/2009 Date de mise à jour :30/06/2009 00:16:09 Vu / téléchargé :2 824 / 344

Auteur : aKheNathOn

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Cette classe vous permet de manipuler du XML très facilement.

Elle vous permet de :

* Parser du xml
* Lire de fichier sous la forme d'objets
* Surcharger les objets de chaque noeud
* De manipuler intuitivement les données
* De sauvegarder les modifications

Un exemple est joint à la classe, le cas d'étude est de manipuler une liste d'utilisateurs dans un fichier XML.

Explication :
-------------

Un seul fichier contient la définition de la classe, c'est xml.class.php.

La classe xmlNode définit de manière générique le contenu du n½ud.

La classe xmlMap définit le chargement, lecture et sauvegarde d'un fichier. Elle représente également les données du noeud parent du document xml et elle hérite de xmlNode.

C'est possible de surcharger cette classe, dans ce cas dans le constructeur vous pouvez utiliser les fonctions suivantes :

* hasMany(tagname) : indique de tel tag est une liste / permet de le mettre dans un array même si un seul tag est trouvé.

* mapTag(tagname, classname) : charge la classe spécifiée pour le tag indiqué. La classe indiquée doit hériter de xmlNode

D'autres options sont dispo, à regarder dans xml.class.php

Source

  • // EXEMPLE DE MAPPING : users.class.php
  • <?php
  • /**
  • * XML Map Demo Class
  • * @license GNU/GPL
  • * @version 1.0.0
  • * @author I. CHIRIAC
  • */
  • class users extends xmlMap {
  • /**
  • * Load users
  • */
  • public function __construct() {
  • $this->hasMany('user');
  • $this->mapTag('user', 'user');
  • parent::__construct('users.xml');
  • }
  • /**
  • * Search an user
  • */
  • public function findUser($login) {
  • foreach($this->user as $u) {
  • if ($u->login == $login) return $u;
  • }
  • }
  • /**
  • * Try to login
  • */
  • public function connect($login, $password) {
  • $user = $this->findUser($login);
  • if ($user) {
  • $ok = $user->login($password);
  • if ($ok) $this->save(); // SAVE LOGIN DATE
  • return $ok;
  • } else return false;
  • }
  • }
  • /**
  • * User class
  • */
  • class user extends xmlNode {
  • /**
  • * Try to login
  • */
  • public function login($password) {
  • if ($this->password == $password) {
  • $this->lastLogin = time();
  • return true;
  • } else {
  • return false;
  • }
  • }
  • /**
  • * Get the last connection date
  • */
  • public function getLastLogin() {
  • if ($this->lastLogin > 0) {
  • return date('Y-m-d H:i:s', $this->lastLogin);
  • } else return 'never';
  • }
  • }
  • ?>
// EXEMPLE DE MAPPING : users.class.php
<?php

	/**
	 * XML Map Demo Class
	 * @license		GNU/GPL	 
	 * @version		1.0.0
	 * @author 		I. CHIRIAC	 	 
	 */		
	class users extends xmlMap {
		/**
		 * Load users
		 */		 		
		public function __construct() {
			$this->hasMany('user');
			$this->mapTag('user', 'user');
			parent::__construct('users.xml');
		}
		/**
		 * Search an user
		 */		 		
		public function findUser($login) {
			foreach($this->user as $u) {
				if ($u->login == $login) return $u;
			}
		}
		/**
		 * Try to login
		 */		 		
		public function connect($login, $password) {
			$user = $this->findUser($login);
			if ($user) {
				$ok = $user->login($password);
				if ($ok) $this->save(); // SAVE LOGIN DATE
				return $ok;
			} else return false;
		}
	}
	/**
	 * User class
	 */	 	
	class user extends xmlNode {
		/**
		 * Try to login
		 */		 		
		public function login($password) {
			if ($this->password == $password) {
				$this->lastLogin = time();
				return true;
			} else {
				return false;
			}
		}
		/**
		 * Get the last connection date
		 */		 		
		public function getLastLogin() {
			if ($this->lastLogin > 0) {
				return date('Y-m-d H:i:s', $this->lastLogin);
			} else return 'never';
		}
	}
?>

 Conclusion

Vous n'avez pas besoin de surcharger la classe de mapping pour chaque fichier, il saurra nativement interpréter la structure.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 juin 2009 00:16:09 :
Ajout d'un exemple de création de fichier xml.

 Sources du même auteur

Source avec Zip OBSERVER PATTERN ORIENTÉ DÉVELOPPEMENT ÉVÉNEMENTIEL DÉCLARAT...
Source avec Zip SERVICE DESIGN PATTERN / CHARGEMENT DYNAMIQUE DE SERVICES D'...
Source avec Zip Source avec une capture WHOIS DOMAIN CLASS : LOOKUP & AVAIBILITY
Source avec Zip SQLDIFF : MIGRATION, VERSIONNING ET SYNCHRONISATION DE LA ST...
Source avec Zip PROTECTION CONTRE LES FAILLES CSRF : CROSS SITE REQUEST FORG...

 Sources de la même categorie

Source avec Zip Source avec une capture MINI-PROCESSEUR XPROC (PIPELINE XML) par ordiman85
Source avec Zip Source avec une capture VIEWER POUR JALBUM SKIN CHAMELEON LIVRE D'OR par ym_trainz
Source avec Zip Source avec une capture PARSEUR XML par petifa
FICHIER XML => TABLEAU ASSOCIATIF par durealex
Source avec Zip Source avec une capture UNE CLASS SITEMAP POUR AFFICHER L'ARBORESCENCE DE VOTRE SITE... par waterw72

 Sources en rapport avec celle ci

Source avec Zip AJOUT D'UN RENDEZ-VOUS DANS UN CALENDRIER EXCHANGE 2003 par SachaWolf
Source avec Zip Source avec une capture MINI-PROCESSEUR XPROC (PIPELINE XML) par ordiman85
Source avec Zip POO - LOGGING PACKAGE par Waredan
Source avec Zip [PHP5] ORMAPPER 4 CRUD par Teclis01
Source avec Zip Source avec une capture PDOBLOG - EXEMPLE DE BLOG MAPPÉ AVEC PDOMAP par aKheNathOn

Commentaires et avis

Commentaire de willeraser le 29/06/2009 17:23:41 10/10

Ca fait vraiment plaisir de voir ce genre de sources de temps en temps !

Commentaire de aKheNathOn le 30/06/2009 00:17:31

merci, ça fait plaisir d'avoir ce genre de commentaire également :))

Commentaire de kankrelune le 30/06/2009 14:35:38

Yes source qui peut s'avérer très utile... je ne note pas car je n'ai pas regardé le code en détail... plus tard peut être... mais aillant déjà vu ta façon de coder je ne me fait pas trop de souci... .. . ;o)

@ tchaOo°

Commentaire de tunfilsdepute le 06/07/2009 10:41:24

Bravo Bravo et encore Bravo belle source et man et en plus cela fonctionne Encore Merci

ps J'approuve la charte de bonne conduite

Commentaire de picaspliff le 06/07/2009 16:41:18

Super code, Merci beaucoup !
Je me demande juste comment gérer du code html stocké dans le fichier XML...

Commentaire de aKheNathOn le 06/07/2009 17:13:28

Si tu veux pas parser le code html, mais juste l'avoir en tant que "String", tu peux le mettre dans du CDATA.

Le script actuel gère justement ce type d'action - tu peux essayer en nommant un utilisateur <b>TOTO</b>

Commentaire de picaspliff le 06/07/2009 18:51:58

<![CDATA[monCodeHtml]]>

Merci la solution fonctionne !
Je peux mettre mes iframe de Google maps dans un fichier XML, c'est cool :-)

Commentaire de picaspliff le 06/07/2009 18:55:32 10/10

Je rajoute une note à ce code et à aKheNathOn qui est très réactif : 10/10 !

Commentaire de encoupe le 06/07/2009 23:45:13 10/10

Une source qui me sera sans doute très utile.
Mais quand je veux la tester, j'ai le message suivant :
'Warning: domdocument::domdocument() expects at least 1 parameter, 0 given in...'
Il ne semble pas trouver le users.xml (dans le même repertoire ques les class).
Il doit être un peu tard, je ne trouve pas la solution !

Commentaire de aKheNathOn le 07/07/2009 10:18:21

Salut, tu dois avoir une version pas compatible. Je suis sur du PHP 5.2.9 (tu dois avoir une version PHP 5.1.x / 5.0.x ou 4).

Tu as des explications ici :
http://www.developpez.net/forums/d185277/php/bibliotheques-frameworks/xml/domxml/domxml-dom-xml-php5-1-a/

Bonne prog à tous,
Akh

Commentaire de encoupe le 07/07/2009 12:44:36

Je suis sur PHP 5.2.5.
Merci pour ton lien, cela m'a permis de trouver la solution.
Je suis sous wamp, et il faut désactiver l'extension php_domxml.

Commentaire de bouztarak25 le 20/07/2009 19:38:03

Ca a l air très sympa comme idée ce code..!! Bravo aKheNathOn ;)

Picaspliff, comme tu vas utiliser ce code pour Goole Maps, il sert à quoi au fait?

Merci et à bientôt :)

Commentaire de picaspliff le 21/07/2009 09:14:06

Je stocke des données sur des voyages dans un fichier XML.
Pour chaque voyage je mets l'adresse d'une carte google maps que je mets dans une iframe.

Commentaire de malalam le 30/07/2009 22:27:17 administrateur CS 10/10

Hi,

après une longue absence, je reviens. Ca fait plaisir de retrouver un de tes codes. Très joli, comme toujours, intéressant et utile.

Commentaire de aKheNathOn le 31/07/2009 10:22:26

Merci à tous pour vos commentaires, ça fait super plaisir d'être utile :).

Pour info je l'ai utilisée sur un cms eCommerce à la place d'une base de données directement et la montée en charge se passe très bien, manquerait éventuellement un système de cache pour le charger en mémoire et ne pas parser les fichiers à chaque fois.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Recherche info sur mapping xml vers postgresql [ par 3xodius55 ] Salut,Actuellement en stage je dois mapper un fichier xml vers une base postgresql ; malheureusement je ne trouve pas de doc sur le sujet à part en j Visibilité des membres d'une classe avec autoload ? [ par petitelarve ] Bonjour, ca m'&#233;n&#233;rve !!! J'ai une classe que je veut instancier dans un autre script avec autoload. L'objectif &#233;tant de r&#233;cup&#233 génération automatique document xml à partir php [ par didimarco62 ] marcodidi62 Salut, J'aurais besoin de cr&#233;er un document XML de fa&#231;on dynamique &#224; partir de mon code PHP. Le document XML recevrait les afficher qu'une section d'un document xml [ par morpheus262 ] Bonjour,J'aimerai savoir si il est possible d afficher qu une partie d'un document xml, autrement dit, juste le contenue d'une balise. et si oui comme apostrophe dans balise XML [ par krolenain ] salut,je suis bloqu&#233; sur un truc bien b&#234;te,quand je fais l'export de ma base SQL en XML, tous les accents et apostrophes sont g&#233;r&#233; Probleme d'enregistrement dans un parseur XML [ par sniktwo ] Salut &#224; tous, alors mon parser XML marche parfaitement et m'affiche bien les donn&#233;es mais, l&#224; o&#249; &#231;a coince, c'est pour les en Utilisation de DOM XML [ par Teclis01 ] Bonjour, Voila j'ai quelques soucis pour utiliser la class DOM XML ... Il ne met pas la balise de fermeture du root du document xml et en plus sans in Programmation Rémunérée [ par ddpetit ] Nous recherchons une personne dont le profil correspond &#224; celui ci-dessous, une r&#233;mun&#233;ration &#224; hauteur de 50 &#224; 70% des revenu XML == MySQL ? [ par Teclis01 ] Bonjour, Je me suis lanc&#233; il y a peu dans la classe DOM XML mais il y a quelqques chose qui me parait vraiment etrange ...J'ai entendu dire et me Bench de class ? [ par Teclis01 ] Voila je me promenais un jour de printemps sur ce joli forum tout venu de rose et ... j'ai vu que certains parlait de bench de class ... Et je voudrai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales