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
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).
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.
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:
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>
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: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>
il y a une différence notable, c'est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
xsi:schemaLocation="http://www.anfr.fr Echanges.xsd"
Qu'est-ce que j'ai oublié de déclarer dans mon code de classe VB net?
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()
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
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
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">