Introduction

Introduction – Transformations simples

Exemple de base de données

Dans ce tutorial, les exemples réfèrent à cette table de base de données :

mysql> select * from bands;+----+--------------+------------+-------------+-------------+| id | name		 | birth_year | birth_place | genre	   |+----+--------------+------------+-------------+-------------+|  1 | The Blabbers |	   1998 | London	  | Rock'n'Roll ||  2 | Only Stupids |	   1997 | New York	| Hip Hop	 |+----+--------------+------------+-------------+-------------+mysql> select * from albums;+----+---------+------------------+------+-----------------+| id | bandsID | title			| year | comment		 |+----+---------+------------------+------+-----------------+|  1 |	   1 | BlaBla		   | 1998 | Their first one ||  2 |	   1 | More Talks	   | 2000 | The second one  ||  3 |	   2 | All your base... | 1999 | The Classic	 |+----+---------+------------------+------+-----------------+

L'utilisation typique

Commençons par un exemple utilisant les options par défaut. La nouvelle instance est liée à un DSN, donc, vous n'avez qu'à fournir une requête SQL. L'instance traite le résultat automatiquement ; dans le paramètre $xmlstring , vous trouvez la représentation XML du jeu de résultats.

Un exemple simple

<?php
require_once "XML/sql2xml.php";
$sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
$xmlstring = $sql2xmlclass->getxml("select * from bands");
?>

Le contenu du paramètre $xmlstring basé sur la table ci-dessus sera :

<?xml version="1.0"?>	<root>		<result>			<row>				<id>1</id>				<name>The Blabbers</name>				<birth_year>1998</birth_year>				<birth_place>London</birth_place>				<genre>Rock'n'Roll</genre>			</row>			<row>				<id>2</id>				<name>Only Stupids</name>				<birth_year>1997</birth_year>				<birth_place>New York</birth_place>				<genre>Hip Hop</genre>			</row>		</result>	</root>

Transformation basé sur des jointures de requêtes

Si le résultat de votre requête est basé sur des jointures de tables, une structure de données XML peut représenter comment le DBMS joint les tables. Pour activer ou désactiver ce comportement, utilisez setOptions() avec la clé option 'nested' . La valeur par défaut est TRUE - le comportement est activé.

Le jeu de résultats

<?php
$sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
$xmlstring = $sql2xmlclass->getxml("select * from bands left join albums on bands.id = bandsID");
?>

L'affichage XML généré dans $xmlstring :

<?xml version="1.0"?>	<root>		<result>			<row>				<id>1</id>				<name>The Blabbers</name>				<birth_year>1998</birth_year>				<birth_place>London</birth_place>				<genre>Rock'n'Roll</genre>				<row>					<id>1</id>					<bandsID>1</bandsID>					<title>BlaBla</title>					<year>1998</year>					<comment>Their first one</comment>				</row>				<row>					<id>2</id>					<bandsID>1</bandsID>					<title>More Talks</title>					<year>2000</year>					<comment>The second one</comment>				</row>			</row>			<row>				<id>2</id>				<name>Only Stupids</name>				<birth_year>1997</birth_year>				<birth_place>New York</birth_place>				<genre>Hip Hop</genre>				<row>					<id>3</id>					<bandsID>2</bandsID>					<title>All your base...</title>					<year>1999</year>					<comment>The Classic</comment>				</row>			</row>		</result>	</root>

Si vous désactivez ce comportement, la structure XML des lignes est plate.

Le jeu de résultats

<?php
$sql2xmlclass = new xml_sql2xml("mysql://username:password@localhost/xmltest");
$options	  = array('nested' => false);
$sql2xmlclass->setOptions($options);
$xmlstring	= $sql2xmlclass->getxml("select * from bands left join albums on bands.id = bandsID");
?>

affichage XML :

$xmlstring =><?xml version="1.0"?>	<root>		<result>			<row>				<id>1</id>				<name>The Blabbers</name>				<birth_year>1998</birth_year>				<birth_place>London</birth_place>				<genre>Rock'n'Roll</genre>				<id>1</id>				<bandsID>1</bandsID>				<title>BlaBla</title>				<year>1998</year>				<comment>Their first one</comment>			</row>			<row>				<id>1</id>				<name>The Blabbers</name>				<birth_year>1998</birth_year>				<birth_place>London</birth_place>				<genre>Rock'n'Roll</genre>				<id>2</id>				<bandsID>1</bandsID>				<title>More Talks</title>				<year>2000</year>				<comment>The second one</comment>			</row>			<row>				<id>2</id>				<name>Only Stupids</name>				<birth_year>1997</birth_year>				<birth_place>New York</birth_place>				<genre>Hip Hop</genre>				<id>3</id>				<bandsID>2</bandsID>				<title>All your base...</title>				<year>1999</year>				<comment>The Classic</comment>			</row>		</result>	</root>
LoadingChargement en cours