Les Allergies
Alimentaires
Posez votre question Signaler

PHP5 et XML, parser en fonction de l'attribut [Résolu]

sly-bzh 415Messages postés 10 janvier 2008Date d'inscription 25 février 2010Dernière intervention - Dernière réponse le 12 févr. 2008 à 15:22
Bonjour à tous et toutes,
Je viens vous voir avec un prblème sur lequel je bute depuis maintenant plus d'une heure.
Voilà j'ai un fichier XML (accessible en entier ici http://beta.uniprot.org/uniprot/A0A373.xml ) de la forme suivante :
-<uniprot xsi:schemaLocation="http://uniprot.org/uniprot http://www.uniprot.org/support/docs/uniprot.xsd">
  -<entry dataset="Swiss-Prot" created="2007-02-06" modified="2007-10-02" version="5">
    <accession>A0A373</accession>
    <name>RK16_COFAR</name>
    ...
    -<comment type="subunit">
        <text>Part of the 50S ribosomal subunit.</text>
    </comment>
    -<comment type="subcellular location">
        <text>Plastid, chloroplast.</text>
    </comment>
    ...
  </entry>
</uniprot>

Oui je sais c'est de la bio mais n'ayez pas peur, je ne vous parlerais pas de bio je le jure !
Ce que je souhaiterais faire c'est récupérer ce qu'il y a entre les balises <text> lorsque l'attribut de la balise <comment> est "subcellular location".
Je pense que c'est assez clair mais si vous voulez plus d'infos, n'hésitez pas, je suis là
D'avance merci
Lire la suite 

PHP5 et XML, parser en fonction de l'attribut »

6 réponses
Réponse
+2
moins plus
Etant donné que je ne suis pas Breton pour rien, je me suis entêté avec simplexml (je l'avoue ce n'est pas tant parce que je suis tétu que parce que je suis fainéant et DOM me faisait peur....)
Donc voilà ce que j'ai trouvé et surtout ce que j'ai réussi à faire.

$xml = simplexml_load_file('http://beta.uniprot.org/uniprot/A0T0M2.xml');
foreach($xml->entry[0]->comment as $comment)
{
	switch((string) $comment['type']){
		case 'subcellular location':
			$location=$comment->text;
			echo "<BR /> la localisation subcellulaire de la protéine est : ".$location;
			if ($location == '%chloroplast%')
				{$nbre_chloro++;}
			break;
	}
}


Certes, ça marche mais bon j'aurais aimé savoir s'il était possible de le faire sans passer par une boucle foreach parceque j'ai inclus ça dans un script assez lourd, il doit aller chercher des infos sur environ 100 000 protéines donc je cherche toutes les possibilités pour accélérer tout ça.
Si c'est possible de le faire sans boucle tant mieux mais sinon tant pis, je suppose que de toutes façon ce n'est pas tant que ça la boucle qui va ralentir, étant donné qu'il va chercher le xml sur un site éloigné.

Merci de votre réponse
Ajouter un commentaire
Réponse
+1
moins plus
En faite, SimpleXML c'est du DOM mais en très simplifié.

J'ai fait un code quasi similaire à ce que tu veux faire et j'ai été obligé d'utiliser le DOM.

Le DOM est plus complet, tu devrais donc trouver toutes les fonctions dont tu as besoin.

Thamior.
Ajouter un commentaire
Réponse
-1
moins plus
Bonjour,

Tu peux y arriver en utilisant le DOM.

Regarde sur ce site : http://fr.php.net/dom tu as toutes les fonctions du DOM pour le faire.

Thamior.
Ajouter un commentaire
Réponse
-1
moins plus
J'étais pluôt parti pour utiliser le simplexml et j'avais déja "créé" ça (oui je sais j'ai oublié de le mettre dans le premier post...)
$xml = simplexml_load_file('http://beta.uniprot.org/uniprot/A0A373.xml');
$subcellular_location = $xml->entry[0]->comment['value="subcellular location"']; 
echo "<BR /> la localisation subcellulaire de la protéine est : ".$subcellular_location;

Mais évidemment ça marche pas sinon je serais pas ici XD

Simplexml m'avait l'air plus simple à utiliser que le DOM mais bon je vais voir avec le DOM
Merci
Ajouter un commentaire
Réponse
-1
moins plus
Je ne connais pas d'autres boucles pour utiliser le DOM que le foreach...

Je ne peux pas t'aider plus... désolé...

Thamior.
Ajouter un commentaire
Réponse
-1
moins plus
Pas de problème. De toutes façon maintenant que c'est parti j'en ai pour quelques dizaines d'heures et une fois que ce sera fait je n'aurais plus à le refaire...
Merci qund même !
Ajouter un commentaire
Ce document intitulé « PHP5 et XML, parser en fonction de l'attribut » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?