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érer contenu d'une balise XML contenant du HTML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [SimpleXML] Récupérer contenu d'une balise XML contenant du HTML
    Bonjour,
    Mon problème est le suivant : j'aimerais récupérer le contenu d'une balise XML afin de l'insérer dans ma base MySQL mais celle-ci contient de la mise en forme HTML (<B>,<I>,etc....).
    Le problème est que ces balises HTML sont interprété comme des balises XML et je n'arrive pas a les importer.

    Voici un extrait du code XML que je souhaite exploiter :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <RUBRIQUE>
        <TEXTE>
            <PAR>Les pontons de Wolfeboro sont déjà loin. Rentré, dimanche 19 août, sur un vol régulier d'Air France Boston-Paris.......<BR/><BR/>
    Sans attendre le conseil des ministres de vendredi,<I>" Attendez-vous à ce que cela reparte très fort à la rentrée "</I>, avait.....
            </PAR>
        </TEXTE>
    </RUBRIQUE>

    Voici mon code pour récupérer le coontenu de la balise <TEXTE> :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $racine = simplexml_load_file($Chemin);
    foreach($racine->RUBRIQUE as $Rubrique)
    {
       $Rubrique = $racine->RUBRIQUE;
       $article = $Rubrique -> xpath('//TEXTE');
    }
    Lorsque j'affiche $article :
    echo $article[0];

    Le texte contenu entre <I> et fin de </I> n'est pas récupérer.

    Auriez-vous une solution? Quitte a modifier le contenu du fichier XML avant de l'exploiter mais je ne sais pas comment faire.

    Par avance merci.

    Sam

  2. #2
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    as tu essayer avec un xpath du grenre
    //TEXTE/*
    ?
    sinon les balises, entre les balises TEXTE, t'intéresse ou tu ne souhaites avoir que le text compris entre les balises?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Août 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réactivité,

    En fait je souhaite récupérer tout le contenu de la balise <TEXTE> ainsi que tout les noeud enfant de celle-ci.

    En effet j'ai essayer avec :
    - $article = $Rubrique -> xpath("//TEXTE/*");
    - $article = $Rubrique -> xpath("//TEXTE/descendant::*");

    Mais cela ne me permet pas de récuperer non plus le contenu de la balise <I>.

    Me serait-il possible de faire une modification du fichier ".xml" en amont? (en supprimant totalement les balises : <B>,<I>,<FONT......).

    Si oui, aurais tu une solution?

    Merci d'avance.

    Sam

  4. #4
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    A mon avis oui avec un xsl comme cela
    Code XML : 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
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output 
      		encoding="ISO-8859-15"
      		method="xml"
      		indent="yes" />
     
    	<xsl:template match="node() | @*">
    		<xsl:value-of select=".">
    		<xsl:apply-templates select="@* | node()"/>
    	</xsl:template>
            <xsl:template match="RUBRIQUE | TEXTE">
    		<xsl:copy>
    			<xsl:apply-templates select="@* | node()"/>
    		</xsl:copy>
    	</xsl:template>
    </xsl:stylesheet>

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    ce n'est pas XPath qui est en cause mais SimpleXML : il ne gère tout simplement pas les contenus mixtes (mélange de texte et de balises), c'est une de ses grosses limitations. La seule solution est de passer par un filtrage en aval, avec une feuille de style telle celle proposée par fraoustin.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. [XML] Recupérer le contenu d'une balise XML en PHP
    Par Higestromm dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/07/2010, 09h57
  2. [AJAX] récupérer contenu d'une balise xml
    Par Braillane dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/06/2007, 08h08
  3. modiffier le contenu d'une balise
    Par duplo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/06/2006, 17h20
  4. [MySQL] Lister le contenu d'une table dans un tableau HTML
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/04/2006, 19h40
  5. [xsl] mauvaise interprétation du contenu d'une balise XML
    Par Cédric B. dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/01/2006, 12h59

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