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
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
tu bosses avec VS ?
si oui ouvre le fichier xml dans l'editeur > XML > Valider les données XML...
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.
J'ai fait ceci. Mais ca plante
A a ligne
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()); }J'ai cette erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part schemaCollection.Add("schema.xsd", nomFichierConfig);
Merci beaucoup de votre aideUne exception non gérée du type 'System.Xml.Schema.XmlSchemaException' s'est produite dans system.xml.dll
Informations supplémentaires*: Erreur système.
Peux-tu catcher ces lignes pour avoir un message complet de l'exception
Sinon attention pour la méthode XmlSchemaCollection.Add (String, String)
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 }
Envoyé par MSDN
Voici mon erreur
Mon fichier XMLXmlException: Marque d'ordre d'octet Unicode manquante. Impossible de basculer en Unicode.
Et mon schéma xsd<?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>
SInon ne serait-il pas mieux de le faire avec un DTD ? Mais comment fait-on à partir d'un fichier xml existant ?<?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>
merci beaucoup
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.<!DOCTYPE config SYSTEM "schema.dtd">
Comment faire pour vérifier que mon fichier xml a un doctype ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager