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

Requêtes MySQL Discussion :

faire un echange de valeur dans un blob XML


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut faire un echange de valeur dans un blob XML
    Bonjour a tous,

    j'ai une table avec un champs blob...Dans ce champs sont stoquées des valeurs de type XML telle que:

    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
    "<?xml version='1.0' encoding='UTF-8'?>\n
    <record\nxmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n
    xsi:schemaLocation='http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd'\n
    xmlns='http://www.loc.gov/MARC21/slim'>\n\n
    <leader>00226nz  a2200109n  4500</leader>\n
    <controlfield tag='001'>1</controlfield>\n
    <controlfield tag='003'>OSt</controlfield>\n
    <controlfield tag='005'>20120305220431.0</controlfield>\n
    <controlfield tag='008'>120305|||a||||||           | |||     d</controlfield>\n
    <datafield tag='040' ind1=' ' ind2=' '>\n
    	<subfield code='a'>OSt</subfield>\n
    	<subfield code='c'>OSt</subfield>\n
    </datafield>\n
    <datafield tag='100' ind1=' ' ind2=' '>\n
    	<subfield code='a'>Muoz Molina, Antonio</subfield>\n
    </datafield>\n
    <datafield tag='942' ind1=' ' ind2=' '>\n
    	<subfield code='a'>PERSO_NAME</subfield>\n
    </datafield>\n</record>\n");

    Je dois remplacer le champs 001 (dans le XML) par la valeur du champ 003...
    J'ai vu sur internet un exemple tel que celui ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select replace(slogen, 'bananas', 'apples') from tcountriesnew where slogen like '%bananas%';
    Mais ça collera pas ici vu que je dois faire comme un detect et replace..
    Buuffff quelqu'un sait faire ça?

    D'avance merci

  2. #2
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par ldiaz Voir le message
    Je dois remplacer le champs 001 (dans le XML) par la valeur du champ 003...
    Je ne comprends pas clairement ce que tu veux faire. Dois-tu remplacer un champs par une valeur ou la valeur d'un champ par celle d'un autre.
    Et que doit-il advenir du champ source ?
    Il faudrait voir si ce tuto te permettrait de trouver une solution à ton problème.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    salut
    le tutorial genial, je vais essayer.
    Ce que je souhaite faire c'est faire un echange de valeurs.

    exemple reduit:
    voici l'xml d'origine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <xml>
    <field_001>45</field_001>
    <field_002>toto</field_002>
    <field_003>foo</field_003>
    <field_004>bar</field_004>
    </xml>
    apres traitement voici le nouveau, remarque que la valeur du champs 001 est aller se loger dans 003 et vice versa.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xml>
    <field_001>foo</field_001>
    <field_002>toto</field_002>
    <field_003>45o</field_003>
    <field_004>bar</field_004>
    </xml>
    Voila, donc ce XML est dans un blob mysql, et je ne sais pas comment delimiter.
    Mon idée en pseudo code serait:

    select de la table avec une combinaison de regex pour isoler les valeur.
    pour touts les champs <field_001>VALEUR</field_001>
    recuperer ce qui ce trouve entre "<" et ">" stoquer dans une variable temp

    chercher le field_003 idem et ensuite faire une asignation pour faire bouger les valeurs. jejeje mais ça j'ai aucune idée de comment faire avec mysql.

    D'avance merci

  4. #4
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    mysql possède un api xml rudimentaire...

    ce que tu cherches à faire est relativement facilement à faire surtout en php avec les différents api présents...

    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  5. #5
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    ok avec php,
    c'est dommage j'aurais voulu faire comme en PL/SQL
    merci a tous !!

    Ciao

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/02/2011, 16h39
  2. Réponses: 4
    Dernier message: 18/08/2009, 17h37
  3. Réponses: 5
    Dernier message: 27/04/2009, 16h15
  4. Réponses: 9
    Dernier message: 09/03/2007, 15h01
  5. Prendre une valeur dans la grappe XML
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 21/05/2003, 10h26

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