Bonjour,
J'utilise un simple fichier .xml pour récupérer des paramètres, à l'aide du code suivant :
Cela fonctionne bien depuis plusieurs années, sauf que depuis 2 jours un nouvel utilisateur (Windows VISTA Familial SP2) m'indique une erreur et bien sûr je n'arrive pas à reproduire le problème sur une machine Vista Pro SP2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim ds As DataSet ds = New DataSet ds.ReadXml("C:\monfic.xml")
Avec le fichier .xml (sans DTD) de la forme :
L'erreur est :
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 <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <fichier> <FIC>Z00</FIC> <ANNEE>2011</ANNEE> <niveau> <CODE>888888</CODE> <LIBN>xxxxx</LIBN> <KEY>AAA</KEY> </niveau> <niveau> <CODE>9999</CODE> <LIBN>yyyyyyyyyyy</LIBN> <KEY>BBB</KEY> </niveau> <package> <PACK>900</PACK> <LIBP>zzzzzzzz</LIBP> <KEY>CCC</KEY> </package> </fichier>
(et indique Ligne, position du dernier caractère du fichier)Vous devez définir la DTD avant l'élément racine du document.
Alors pour tester, j'ai rajouté un DTD en début de fichier (et validé avec XmlValidatingReader :
Alors l'erreur est :
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 <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <!DOCTYPE fichier [ <!ELEMENT fichier (FIC, ANNEE, niveau+, package+) > <!ELEMENT FIC (#PCDATA) > <!ELEMENT ANNEE (#PCDATA) > <!ELEMENT niveau (CODE, LIBN, KEY) > <!ELEMENT package (PACK, LIBP, KEY) > <!ELEMENT CODE (#PCDATA) > <!ELEMENT LIBN (#PCDATA) > <!ELEMENT KEY (#PCDATA) > <!ELEMENT PACK (#PCDATA) > <!ELEMENT LIBP (#PCDATA) > ]> <fichier> <FIC>Z00</FIC> <ANNEE>2011</ANNEE> <niveau> <CODE>888888</CODE> <LIBN>xxxxx</LIBN> <KEY>AAA</KEY> </niveau> <niveau> <CODE>9999</CODE> <LIBN>yyyyyyyyyyy</LIBN> <KEY>BBB</KEY> </niveau> <package> <PACK>900</PACK> <LIBP>zzzzzzzz</LIBP> <KEY>CCC</KEY> </package> </fichier>
(Ligne et position indique le dernier caractère du fichier)Impossible d'avoir plusieurs DTD.
J'ai du mal à comprendre d'où cela peut venir, puisque normalement ça fonctionne bien sans DTD ..., peut être un comportement particulier de Vista Familial ?
Si vous avez une piste ... je prends !
Merci pour votre aide,
G
Partager