Bonjour,
Je réalise un petit soft en VB net 2012.
Ce soft doit importer des données contenues dans un fichier xml généré ailleurs suivant un shéma xsd
J'ai donc généré les class VB net en utilisant Xsd2Code.
L'importation plante le serializer à la ligne Dim MonEchange
avec ce message
J'ai alors pris le problème à l'envers et j'ai crée une instance de ma classe echange, que j'ai sérialisé dans un fichier xml.Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans System.Xml.dll
Informations supplémentaires*: Il existe une erreur dans le document XML (2, 2).
après différents copier-coller dans les fichiers xml, j'ai réussi à isoler le problème.
Cela vient de l’entête du fichier que je dois importer et qui commence comme ceci:
Le fichier xml que je créé lui, commence ainsi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <?xml version="1.0" encoding="UTF-8"?> <echange xmlns="http://www.anfr.fr" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.anfr.fr Echanges.xsd" id="3d8525b3-34c6-3054-c575-f5480f171172" dateEmission="2012-03-22" heureEmission="12:30:00" emetteur="XXXXX_XXX" destinataire="ANFR"> <rapportsMesures>
il y a une différence notable, c'est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <?xml version="1.0" encoding="utf-8"?> <echange xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="7b46798c-4f95-4498-a5ec-b0cc38e46498" dateEmission="2012-03-22" heureEmission="0001-01-01T12:30:00" emetteur="ASP" destinataire="dddd"> <rapportsMesures>
Qu'est-ce que j'ai oublié de déclarer dans mon code de classe VB net?
Code : Sélectionner tout - Visualiser dans une fenêtre à part xsi:schemaLocation="http://www.anfr.fr Echanges.xsd"
Merci d'avance pour votre réponse
Voici les codes de classe et de xsd:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Public Sub importerXML(MonFichier As String) Dim MaClasse As New echanges.echangeRapportsMesures ' Dim reader = New XmlSerializer(GetType(echange)) Dim reader = New XmlSerializer(GetType(echanges.echange)) Dim file = New StreamReader(MonFichier) Dim MonEchange = CType(reader.Deserialize(file), echanges.echange) file.Close()Voici le début du xsd
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Imports System.Diagnostics Imports System.Xml.Serialization Imports System.Collections Imports System.Xml.Schema Imports System.ComponentModel Imports System.Collections.Generic Namespace echanges Partial Public Class echange Private rapportsMesuresField As echangeRapportsMesures Private idField As 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 <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.anfr.fr" xmlns:mcr="http://www.anfr.fr" elementFormDefault="qualified"> <xs:include schemaLocation="Bases.xsd"/> <xs:include schemaLocation="OrganismesEchangeursEnum.xsd"/> <xs:include schemaLocation="RapportsMesures.xsd"/> <xs:element name="echange"> <xs:annotation> <xs:documentation>Echange d'informations réalisé entre l'ASP, l'ANFR et les laboratoire pour transmettre des informations de type Rapports de mesures, Commandes ASP, Rapport d'erreurs, Rapport de validation, Accusés de récéption</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence > <xs:choice> <xs:element name="rapportsMesures">
Partager