IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[SimpleXML] récupérations les données des éléments imbriques dans autres éléments XMl - PHP


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 97
    Points : 57
    Points
    57
    Par défaut [SimpleXML] récupérations les données des éléments imbriques dans autres éléments XMl - PHP
    Bonjour, tout le monde

    débutant avec le xml en php, je rencontre un problème avec la récupération des informations qui se trouve entre deux balises qui se trouve eux même entre deux autres balises, je m'explique :

    mon XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?xml version="1.0" encoding="utf-8" standalone="no"?>
     <Document>
      <test:content>
      <nitf:nitf>
        <nitf:body>
          <nitf:body.content>
            <nitf:block>
               <nitf:p>bla bla bla bla bla</nitf:p>
            </nitf:block>
           <nitf:block class="footnote">
               <nitf:p>
                    Lorem ipsum dolor sit amet, facilisis ultricies lorem ridiculus
                  <nitf:em class="bold">
                       <nitf:em>Contact :</nitf:em>
                  </nitf:em>  <nitf:br/>
                  <nitf:em>
                       moi@moi.com
                  </nitf:em> <nitf:br/>
                  Lorem ipsum dolor sit amet, facilisis ultricies lorem ridiculus
               </nitf:p>
           </nitf:block>
         </nitf:body.content>
       </nitf:body>
     </nitf:nitf>
    </test:content>
    </Document>
    J'aimerais récuperer le contenu de chaque élément nitf:block mais aussi des éléments qui se trouve de dans c'est à dire <nitf:em>

    Résultat final : Lorem ipsum dolor sit amet, facilisis ultricies lorem ridiculus, Contact : moi@moi.com Lorem ipsum dolor sit amet, facilisis ultricies lorem ridiculus

    pour l'instant j'ai réussi à récupere que Lorem ipsum dolor sit amet, facilisis ultricies lorem ridiculus (il me manque les infos dans l'élément <nitf:em> ) Lorem ipsum dolor sit amet, facilisis ultricies lorem ridiculus

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $xml = simplexml_load_file("fichier.xml");
    $blocks = $xml->xpath('//test:content/nitf:nitf/nitf:body/nitf:body.content/nitf:block/nitf:p');
     
    	$id_block = 0;
    	foreach($blocks as $block)
    	{
    		$texte .= "\n<p>".$block[0]."</p>";
    	}
    J'ai essayé de boucler sur chaque élément <nitf:em> mais ça donne pas les résultats attendue .

    Merci beaucoup d'avance pour l'aide

    Bonne journée

  2. #2
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par victoires Voir le message

    J'ai essayé de boucler sur chaque élément <nitf:em> mais ça donne pas les résultats attendue .

    Merci beaucoup d'avance pour l'aide

    Bonne journée
    Bonjour Victoires,
    Ce que tu es en train de faire, c'est parser du xml en html, nan ?
    A mon avis ce que tu cherches appelle une solution un peu plus complète que de simples boucles foreach (en passant par une fonction récursive)... je serais toi je passerai par une structure genre:
    * une fonction pour récupérer tous les éléments enfants directs du nœud racine, genre getNodeNames($nom_document)
    * une fonction qui récupère tous les nœuds enfants, la fonction récursive, genre getRecursiveNodeNames ($noeud):
    - s'il n'y a pas d'enfants: appel de la fonction de parsage xml -> html
    - s'il y des enfants, cette fonction s'appelle elle-même
    * une fonction de parsage xml -> html, genre parse($noeud, $contenu_deja_parsé)

    Tout ça est très théorique et te donne que très peu d'infos, mais c'est une structure assez classique. Tu peux trouver plus d'info si tu cherches genre "parser xml en html" sur google.
    Si tu veux, je pourrais te donner un exemple...
    My daughter, my laptop, my bike and my double-sticks...

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 97
    Points : 57
    Points
    57
    Par défaut
    merci pour votre réponse; je veux regarder ses fonctions .

    En fait moi je voulais transformer un fichier xml vers un autre fichier en appliquant des règles . et j’essaye de la faire depuis PHP.

    Est ce d'après vous existe des solutions permet ça de manière plus facile ?

    Eh oui si vous pouvez me donner un exemple; ça sera génial . Merci beaucoup

  4. #4
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Il y a plusieurs solutions,
    XSLT en est une, qui transforme un fichier xml en un autre fichier xml (ou un fichier html).
    Mais
    Citation Envoyé par victoires Voir le message
    En fait moi je voulais transformer un fichier xml vers un autre fichier en appliquant des règles . et j’essaye de la faire depuis PHP.
    La solution de passer en PHP par un traitement récursif me paraît la plus efficace (notamment à maintenir). Ca permet de traiter les objets qui sont à l'intérieur d'autres objets qui sont à l'intérieur d'autres objets....
    Ca doit être possible de passer par des boucles, mais ça ne me semble ni plus simple, ni plus efficace.
    Je suis en train de travailler sur quelque chose de similaire, je pourrais vous le mettre en exemple d'ici quelques temps si vous n'avez pas trouvé mieux d'ici là...

    [edit] Vous pouvez trouver ici un exemple de parcours récursif des noeuds d'un fichier xml, avec récupération des noms des noeuds, des valeurs et des attributs, dans un format utilisable directement par php.
    My daughter, my laptop, my bike and my double-sticks...

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 97
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par kalimukti Voir le message
    [edit] Vous pouvez trouver ici un exemple de parcours récursif des noeuds d'un fichier xml, avec récupération des noms des noeuds, des valeurs et des attributs, dans un format utilisable directement par php.
    Bonjour,

    Merci bcp je regarde ça

    Bonne journée

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2011
    Messages : 97
    Points : 57
    Points
    57
    Par défaut
    J'ai pris exactement le même code mais ceci ne marche pas
    résultats => page blanche et pas des messages d'erreur :s

  7. #7
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par victoires Voir le message
    J'ai pris exactement le même code mais ceci ne marche pas
    résultats => page blanche et pas des messages d'erreur :s
    Bonjour,
    Chez moi le code marche...
    Comme ça, à la volée, je dirais que ça vient de ces lignes dans la fonction fileToObject:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // validation à partir de la DTD référencée dans le document.
    // En cas d'erreur, on ne va pas plus loin
    if (!@$dom->validate()) {
          return false;
    }
    Si votre fichier xml n'a pas de DTD ou qu'il n'est pas valide suivant votre DTD, la fonction renvoie false et ne va pas plus loin... supprimez ces lignes, ça devrait marcher.
    My daughter, my laptop, my bike and my double-sticks...

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/08/2012, 15h35
  2. enregistrer les données du formulaire jsp dans une bd xml
    Par fruwen7 dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 19/07/2012, 13h03
  3. [VB6]Grouper les données des deux tables dans une troisième
    Par Abed_H dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 29/04/2009, 11h29
  4. Réponses: 1
    Dernier message: 25/04/2008, 16h17
  5. Réponses: 12
    Dernier message: 20/04/2006, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo