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 :

[C#] Ouvrir un xml encodé en utf-16 avec xpath


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 32
    Points : 32
    Points
    32
    Par défaut [C#] Ouvrir un xml encodé en utf-16 avec xpath
    Bonjour à tous,
    Je voudrais savoir s'il était possible d'ouvrir et d'exploiter un xml qui est encodé en utf-16 avec Xpath. Je me suis documenté sur xPath et j'ai suivi l'exemple proposé par microsoft. Mon fichier étant encodé en utf-16, j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception non gérée*: System.Xml.XmlException: Marque d'ordre d'octet Unicode manquante. Impossible de basculer en Unicode.
    Par contre si je modifie à la main en mettant utf-8 tout est parfait. Je voudrais donc savoir s'il est possible d'ouvrir et d'exploiter un fichier xml directement encodé en utf-16.
    Dans la mesure du possible je voudrais éviter d'avoir à convertir en utf-8 le fichier afin de ne pas dégrader les performances de l'application.

    Merci par avance.

    Voici une partie du code (dispo sur microsoft) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Load the document and set the root element.
    XmlDocument doc = new XmlDocument();
    doc.Load("xmlYamin.xml");
    XmlNode root = doc.DocumentElement;

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    A mon avis ton fichier n'est pas réellement en UTF-16... Je pense que l'information d'encodage dans l'en-tête XML est incorrecte et ne correspond pas à l'encodage réel du fichier.

    Une solution simple est de forcer la lecture en UTF-8 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Load the document and set the root element.
    XmlDocument doc = new XmlDocument();
    using (var reader = new StreamReader("xmlYamin.xml", Encoding.UTF8))
    {
        doc.Load(reader);
    }
    XmlNode root = doc.DocumentElement;
    Ou encore de lire le texte du fichier et de le charger dans le XmlDocument :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    XmlDocument doc = new XmlDocument();
    string xml = File.ReadAllText("xmlYamin.xml");
    doc.LoadXml(xml);
    XmlNode root = doc.DocumentElement;

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/07/2010, 14h07
  2. Lire XML encodé UTF-8 sans noeud
    Par Bobdelariege dans le forum VB.NET
    Réponses: 1
    Dernier message: 23/06/2010, 11h13
  3. Apache/PHP, xml encoding=UTF-8
    Par Shmitabidf dans le forum Apache
    Réponses: 8
    Dernier message: 27/11/2009, 11h50
  4. instruction pour xml Encoder utf-8
    Par totoche dans le forum ASP
    Réponses: 7
    Dernier message: 14/02/2007, 11h03
  5. Creation d'un fichier XML avec ASP encoder en UTF-8
    Par freeze_land dans le forum ASP
    Réponses: 6
    Dernier message: 14/02/2007, 10h59

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