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

C# Discussion :

Caractères spéciaux dans colonne Xml


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 19
    Points : 7
    Points
    7
    Par défaut Caractères spéciaux dans colonne Xml
    Bonjour,

    J'exploite une colonne xml dans une table sql server. J'ai besoin d'extraire les infos contenues dans cette colonne xml via C#. Le problème est que je rencontre des caractères spéciaux dans cette colonne. Comment faire pour ignorer ces caractères spéciaux?

    Exemple colonne xml: D_MESSAGEDETAILS (Type Text)

    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
    27
    28
    29
    30
    31
    32
    33
    34
     
    <Alerte>    
         <Donnees>      
                 <IdentifiantUnique>868585d1-8b6c-44d9-9559</IdentifiantUnique>  
                 <Produit>TEST</Produit>   
                 <DateEmission>2013-10-17T15:04:48</DateEmission>      
    	<CodeProcessus>TOTO</CodeProcessus>      
    	<LibelleProduit>TEST</LibelleProduit>      
    	<Civilite>M</Civilite>      
    	<Nom>TITI</Nom>      
    	<Prenom>TATA</Prenom>      
    	<AdresseLigne1>2 rue rivoli</AdresseLigne1>         
    	<CodePostal>75001</CodePostal>      
    	<Ville>PARIS</Ville>   
    	<ArrayOfDonneeFormulaire>  
    	<DonneeFormulaire>          
    	      <ListDonneesFormulaireCodeQuestion>Raison Sociale
                       </ListDonneesFormulaireCodeQuestion>          
                       <ListDonneesFormulaireLibelleQuestion>Entreprise:              
                       </ListDonneesFormulaireLibelleQuestion>          
                       <ListDonneesFormulaireValeurReponse>Toto & Tata
                       </ListDonneesFormulaireValeurReponse>        
    	</DonneeFormulaire>        
    	<DonneeFormulaire>          
                       <ListDonneesFormulaireCodeQuestion>Garanti
                       </ListDonneesFormulaireCodeQuestion>          
                       <ListDonneesFormulaireLibelleQuestion>Garanties:        
                       </ListDonneesFormulaireLibelleQuestion>          
                       <ListDonneesFormulaireValeurReponse>Vol et Casse <          
                       </ListDonneesFormulaireValeurReponse>        
    	</DonneeFormulaire>      
                 </ArrayOfDonneeFormulaire>    
         </Donnees>  
    </Alerte>
    Dans cette colonne, les caractères "&" et "<" me font planter mon package SSIS.

    Merci pour votre aide.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 19
    Points : 7
    Points
    7
    Par défaut Code C# de l'extraction de la colonne xml
    Voici le code utilisé mais qui plante lorsqu'il rencontre un caractère spécial.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    /* Microsoft SQL Server Integration Services Script Component
    *  Write scripts using Microsoft Visual C#*2008.
    *  ScriptMain is the entry point class of the script.*/
     
    using System;
    using System.Data;
    using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
    using Microsoft.SqlServer.Dts.Runtime.Wrapper;
    using System.Xml;
    using System.Linq;
    using System.Xml.Linq;
    using System.Globalization;
    using System.Threading;
    using System.Text;
     
    [Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
    public class ScriptMain : UserComponent
    {
     
        public override void PreExecute()
        {
            base.PreExecute();
            /*
              Add your code here for preprocessing or remove if not needed
            */
        }
     
        public override void PostExecute()
        {
            base.PostExecute();
            /*
              Add your code here for postprocessing or remove if not needed
              You can set read/write variables here, for example:
              Variables.MyIntVar = 100
            */
        }
     
        public override void Entrée0_ProcessInputRow(Entrée0Buffer Row)
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
            /*
              Add your code here
            */
     
            XmlDocument xml = new XmlDocument();
            string x = System.Text.Encoding.GetEncoding(1252).GetString(Row.DMESSAGEDETAILS.GetBlobData(0, (int)Row.DMESSAGEDETAILS.Length));//System.Text.Encoding.Unicode.GetString(((Row.DMESSAGEDETAILS.GetBlobData(0, (int)Row.DMESSAGEDETAILS.Length))));       
     
            //if (x.ToUpper().Contains("(E)</PROFESSION>"))
            if (x.Contains("(<DateEmission>"))
                System.Windows.Forms.MessageBox.Show(x);
     
            XDocument doc = XDocument.Parse(x);
            var reqs = from Donnees in doc.Descendants("Donnees")
                       select new
                       {
                           IdentifiantUnique = Donnees.Element("IdentifiantUnique") == null ? "" : Donnees.Element("IdentifiantUnique").Value,
                           CodeProcessus = Donnees.Element("CodeProcessus") == null ? "" : Donnees.Element("CodeProcessus").Value,
                           Produit = Donnees.Element("Produit") == null ? "" : Donnees.Element("Produit").Value,
                           LibelleProduit = Donnees.Element("LibelleProduit") == null ? "" : Donnees.Element("LibelleProduit").Value,
                           DateEmission = Donnees.Element("DateEmission") == null ? DateTime.MinValue : DateTime.Parse(Donnees.Element("DateEmission").Value),
                           Civilite = Donnees.Element("Civilite") == null ? "" : Donnees.Element("Civilite").Value,
                           Nom = Donnees.Element("Nom") == null ? "" : Donnees.Element("Nom").Value,
                           Prenom = Donnees.Element("Prenom") == null ? "" : Donnees.Element("Prenom").Value,
                           CodePostal = Donnees.Element("CodePostal") == null ? "" : Donnees.Element("CodePostal").Value,
                           Ville = Donnees.Element("Ville") == null ? "" : Donnees.Element("Ville").Value,
                           AdresseLigne1 = Donnees.Element("AdresseLigne1") == null ? "" : Donnees.Element("AdresseLigne1").Value,
     
                       };
     
            try
            {
                foreach (var req in reqs)
                {
                    Row.IdentifiantUnique = req.IdentifiantUnique.Trim();
                    Row.CodeProcessus = req.CodeProcessus.Trim();
                    Row.Produit = req.Produit.Trim();
                    Row.LibelleProduit = req.LibelleProduit.Trim();
                    Row.DateEmission = req.DateEmission;
                    Row.AdresseLigne1 = req.AdresseLigne1.Trim();
                    Row.Civilite = req.Civilite.Trim();
                    Row.Nom = req.Nom.Trim();
                    Row.Prenom = req.Prenom.Trim();
                    Row.Ville = req.Ville.Trim();
                    Row.CodePostal = req.CodePostal.Trim();
                }
            }
            catch (System.Xml.XPath.XPathException ePath)
            {
                //System.Windows.Forms.MessageBox.Show(ePath.Message + " : " + ePath.InnerException.ToString());
     
            }
            catch (Exception e)
            {
                //System.Windows.Forms.MessageBox.Show(e.Message + " : " + e.InnerException.ToString());
     
            }
        }
     
    }

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Points : 359
    Points
    359
    Par défaut
    Suite à une petite recherche dans google .... voici un lien : http://en.wikipedia.org/wiki/List_of...ity_references

    - Je pense que la recherche suivante t'aurai fait économisé beaucoup de temps : special caractere xml

    Rien de très compliqué

Discussions similaires

  1. [OpenOffice][Texte] Encodage des caractères spéciaux dans content.xml
    Par Loko dans le forum OpenOffice & LibreOffice
    Réponses: 6
    Dernier message: 28/10/2013, 18h15
  2. Remplacer les caractères spéciaux dans xml
    Par panda31 dans le forum Développement de jobs
    Réponses: 14
    Dernier message: 19/10/2011, 09h53
  3. Caractères spéciaux dans les tags XML : soucis sur les getters
    Par schtroumpfNormand dans le forum Services Web
    Réponses: 4
    Dernier message: 09/08/2011, 14h06
  4. Caractères spéciaux dans fichier XML
    Par Kembali dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/02/2011, 10h35
  5. [XML] caractères spéciaux dans un type NMTOKEN
    Par norkius dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 08/09/2004, 14h30

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