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#] Comment vérifier la validité du schéma XML ?


Sujet :

C#

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut [C#] Comment vérifier la validité du schéma XML ?
    J'ai un fichier xml, et un schéma xsd.

    Comment faire pour vérifier si mon fichier xml est valide par rapport au schéma xsd ?

    Merci beaucoup

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    tu bosses avec VS ?
    si oui ouvre le fichier xml dans l'editeur > XML > Valider les données XML...

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Non pas sur VS.
    Mais dans mon application.
    Je récupere in fichier XML et je voudrais savoir si ce fichier xml est construit comme je le veux.

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    J'ai fait ceci. Mais ca plante

    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
     
    //XmlTextReader myXmlTextReader = new XmlTextReader
    (nomFichierConfig);
    //XmlValidatingReader myXmlValidatingReader = new XmlValidatingReader
    (myXmlTextReader);
    string nomFichierConfig="config.xml";
    XmlValidatingReader myXmlValidatingReader = new XmlValidatingReader
    (new XmlTextReader(new StreamReader(nomFichierConfig)));
    myXmlValidatingReader.ValidationType = ValidationType.Schema;
    System.Xml.Schema.XmlSchemaCollection schemaCollection = new
     System.Xml.Schema.XmlSchemaCollection();
    schemaCollection.Add("schema.xsd", nomFichierConfig);
    myXmlValidatingReader.Schemas.Add(schemaCollection);
    try
    {                
        // Read XML data
        while (myXmlValidatingReader.Read()){}
        Console.WriteLine ("Validation finished. Validation");
    }
    catch (XmlException e)
    {
        Console.WriteLine ("XmlException: " + e.ToString());
    }
     
    catch (Exception e)
    {
        Console.WriteLine ("Exception: " + e.ToString());
    }
    A a ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    schemaCollection.Add("schema.xsd", nomFichierConfig);
    J'ai cette erreur

    Une exception non gérée du type 'System.Xml.Schema.XmlSchemaException' s'est produite dans system.xml.dll

    Informations supplémentaires*: Erreur système.
    Merci beaucoup de votre aide

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Peux-tu catcher ces lignes pour avoir un message complet de l'exception
    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
     
    using System;
    using System.IO;
    using System.Xml;
    using System.Xml.Schema;
    //...
     
    string configPath ="config.xml";
    StreamReader mySR = null;
    XmlTextReader myXTR = null;
    XmlValidatingReader myXVR = null;
    XmlSchemaCollection mySC = new XmlSchemaCollection();
    try
     {
       mySR = new StreamReader(ConfigPath);
       myXTR = new XmlTextReader(mySR);
       myXVR= new XmlValidatingReader(myXTR);
       myXVR.ValidationType = ValidationType.Schema;
       mySC.Add("schema.xsd", configPath);
       myXVR.Schemas.Add(mySC);
     
       while (myXVR.Read())
       {
          //...
       }
       Console.WriteLine ("Validation finished. Validation");
     }
    catch (XmlException e)
     {
       Console.WriteLine ("XmlException: " + e.Message);
     }
     
    catch (Exception e)
     {
       Console.WriteLine ("Exception: " + e.Message);
     }
    finally
     {
        // fermer et disposer tout ce qui est necessaire
     }
    Sinon attention pour la méthode XmlSchemaCollection.Add (String, String)
    Citation Envoyé par MSDN
    Paramètres
    • 1: URI d'espace de noms associé au schéma. Pour les schémas XSD (XML Schema Definition language), il s'agit généralement de targetNamespace.
      2: URL qui spécifie le schéma à charger.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Voici mon erreur

    XmlException: Marque d'ordre d'octet Unicode manquante. Impossible de basculer en Unicode.
    Mon fichier XML

    <?xml version="1.0" encoding="utf-16" standalone="yes"?>
    <config>
    <BD>
    <user>toto</user>
    </BD>
    <Dossier>
    <tmp>"e:\tmp"</tmp>
    <general>"e:\general\"</general>
    </Dossier>
    </config>
    Et mon schéma xsd

    <?xml version="1.0"?>
    <xs:schema id="config" targetNamespace="http://tempuri.org/XMLFile1.xsd" xmlns:mstns="http://tempuri.org/XMLFile1.xsd" xmlns="http://tempuri.org/XMLFile1.xsd" xmlns: xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com: xml-msdata" attributeFormDefault="qualified" elementFormDefault="qualified">
    <xs:element name="config" msdata:IsDataSet="true" msdata:Locale="fr-FR" msdata:EnforceConstraints="False">
    <xs:complexType>
    <xs:choice maxOccurs="unbounded">
    <xs:element name="BD">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="user" type="xs:string" minOccurs="0" />
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:element name="Dossier">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="tmp" type="xs:string" minOccurs="0" />
    <xs:element name="general" type="xs:string" minOccurs="0" />
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:choice>
    </xs:complexType>
    </xs:element>
    </xs:schema>
    SInon ne serait-il pas mieux de le faire avec un DTD ? Mais comment fait-on à partir d'un fichier xml existant ?


    merci beaucoup

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Finallement je l'ai fait avec un DTD, ca fonctionne.

    Or si dans mon fichier xml, j'enleve la ligne
    <!DOCTYPE config SYSTEM "schema.dtd">
    Quel que soit la manière dont est fait le fichier xml, il me le valide.
    Comment faire pour vérifier que mon fichier xml a un doctype ?

  9. #9
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 1
    Points : 0
    Points
    0
    Par défaut Demande des fichiers de vérifications
    Citation Envoyé par Oberown Voir le message
    Finallement je l'ai fait avec un DTD, ca fonctionne.

    Or si dans mon fichier xml, j'enleve la ligne


    Quel que soit la manière dont est fait le fichier xml, il me le valide.
    Comment faire pour vérifier que mon fichier xml a un doctype ?
    Bonsoir,
    Je souhaiterais savoir si il est possible d'obtenir le code pour la vérification de votre fichier XML avec et sans DTD svp ?

    Bien à vous,

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 19/02/2015, 12h23
  2. Réponses: 2
    Dernier message: 11/12/2012, 21h00
  3. Comment mesurer les performances des I/O (lecture d'un fichier XML)?
    Par LGnord dans le forum Tests et Performance
    Réponses: 2
    Dernier message: 08/11/2011, 11h39
  4. [XPATH] [DOM4J] Comment générer un xPath à partir d'un élément d'un document XML
    Par Hoegaarden dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/10/2008, 15h02
  5. Réponses: 3
    Dernier message: 27/07/2006, 09h17

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