création d'une classe qui utilise données du simpleXml

Petit nouveau ! | 7 Messages

02 janv. 2008, 13:02

Bonjour;
je travaille sur des fichiers xml qui s'appelle user-agent profile(ua prof). J'ai réussi à parser ces fichiers avec simplexml et j'obtient un array pour les namespaces et un objet simplexmlElement. voici un bout de ce que j'ai :

Code : Tout sélectionner

SimpleXMLElement Object ( [BitsPerPixel] => 1 [ColorCapable] => No [CPU] => ARM7 [InputCharSet] => SimpleXMLElement Object ( ) [ImageCapable] => Yes [Keyboard] => Qwerty [Model] => BlackBerry 5810 [NumberOfSoftKeys] => 0 [OutputCharSet] => SimpleXMLElement Object ( ) [PointingResolution] => Character [PixelAspectRatio] => 1x1 [ScreenSize] => 160x160 [ScreenSizeChar] => 26x16 [SoundOutputCapable] => Yes [StandardFontProportional] => Yes [TextInputCapable] => Yes [Vendor] => Research In Motion Ltd. [VoiceInputCapable] => Yes )
Ma question est la suivante est ce qu'il est possible de créer une classe qui me permet de récupérer que certains éléments par exemple si je veux avoir ScreenSize ou les sous élément de l'élément OutputCharSet?
merci d'avance

Petit nouveau ! | 7 Messages

03 janv. 2008, 19:28

Bonjour;
pour plus de clareté sur ce sujet; j'ai analysé le fichier xml en utlsant le simplexml. Mais vue qu'il y'a des namespaces dans le xml; il n'est pas possible d'afficher le SimpleXMLElement Object avec un print_r ou un var_dump. Donc j'ai fait un script qui me permet de récupérer chaque fils en tenant compte des namespaces.
ci-après une partie du script:
//on crée l'objet SimpleXMLElement
$xml = simplexml_load_string($file);

// on récupère tous les namespace dans un Array
$ns  = $xml->getNamespaces(true);
print_r($ns);
//on récupère tous les fils qui appartiennent au namespace rdf
$rdf = $xml->children($ns['rdf']);
//<prf:component> les éléments du namespace prf
$ns  = $rdf->getNamespaces(true);
$prf = $rdf->children($ns['prf']);
$ns  = $prf->getNamespaces(true);
for($i= 0; $i < count($prf); $i++){
	//on récupère l'élément rdf courrent
	$rdf = $prf[$i]->children($ns['rdf']);
	//on vérifie l'élément rdf courrent
	switch($rdf->attributes($ns['rdf'])->ID){
		//si l'élément rdf couurent est : <rdf:Description rdf:ID="HardwarePlatform">
		case 'HardwarePlatform':
			//on regarde les namespaces disponibles pour ce cas
			$ns  = $rdf->getNamespaces(true);
			//on parcourre tous les namespaces 
			foreach($ns as $values=>$key){
				//on met les namespaces dans un tableau
				$_res[] = $values;
			}
}
break;
}
Donc actuellement j'ai besoin d'une classe qui me permet de récupérer les données selon le besoin de l'utilisateur.