Bonjour à tous,

je suis plutôt débutant en vb.net et voici mon problème :
mon programme est une interface entre 2 programmes. Le but est de modifier la valeur de certains nœuds qui ne correspondent pas à la valeur attendue dans le logiciel de destination.
je modifie la valeur des nœuds dans un fichier type XML. La modification se fait bien pas de problème mais,
le format de sortie est très différent de celui d'origine et du coup ça ne passe pas dans le logiciel de destination



voici mon format XML original (en partie il fait près de 15000 lignes) :

Code XML : 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
 
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<p:Aller xmlns:p="http://www.xx.net" xmlns:acta="http://www.xx.net" xmlns:buda="http://www.xxx.net" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Id="ID0000000000">
<DepenseAller>
<Bordereau>
<Piece>
<BlocPiece>
<InfoPce>
   <IdPce V="1006"></IdPce>
   <TypPce V="01"></TypPce>
   <NatPce V="09"></NatPce>
   <Obj V="CP.CHATEAU"></Obj>
</InfoPce>
</BlocPiece>
</Piece>
</Bordereau>
</DepenseAller>
<Fichier MIMEType="application/pdf">H4sIAAAAAAAAAHS3Y5AmTdA2eo9t27Zt27Zt27Zndmzt2LZ2bNs7tmfOPu/3fj/OiTjZVZVXXlGZ
3Z1ZHZFNpigqTsdEzwZNdvf28gxNxkLPCs1OyEjoYGwNzcvLIGzl6qJo5iziYOfoYG9m70rIySDi
(... environ 2000 lignes de ce type entre les 2 nodes <fichier></fichier>...)
YOvgrOJoZGLGIGrmbmViJuFs5MUgbmXraubMIK2oKWpm4mBqxiBpZmVh6UrIwsbEySBrZm/haknI
</Fichier>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="signature">
	<ds:SignedInfo>
		<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
		<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
	</ds:SignedInfo>
</ds:Signature></p:Aller>

voici le format que j’obtiens en sortie :

Code XML : 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
 
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<p:Aller xmlns:p="http://www.xx.net" xmlns:acta="http://www.xx.net" xmlns:buda="http://www.xxx.net" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Id="ID0000000000">
  <DepenseAller>
    <Bordereau>
      <Piece>
        <BlocPiece>
          <InfoPce>
            <IdPce V="1006">
            </IdPce>
            <TypPce V="11">
            </TypPce>
            <NatPce V="11">
            </NatPce>
            <Obj V="CP.CHATEAU">
            </Obj>
          </InfoPce>
        </BlocPiece>
      </Piece>
    </Bordereau>
  </DepenseAller>
        <Fichier MIMEType="application/pdf">H4sIAAAAAAAAAHS3Y5AmTdA2eo9t27Zt27Zt27Zndmzt2LZ2bNs7tmfOPu/3fj/OiTjZVZVXXlGZ
3Z1ZHZFNpigqTsdEzwZNdvf28gxNxkLPCs1OyEjoYGwNzcvLIGzl6qJo5iziYOfoYG9m70rIySDi
(... environ 2000 lignes de ce type entre les 2 nodes <fichier></fichier>...)
YOvgrOJoZGLGIGrmbmViJuFs5MUgbmXraubMIK2oKWpm4mBqxiBpZmVh6UrIwsbEySBrZm/haknI
</Fichier>
  <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="signature">
    <ds:SignedInfo>
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
    </ds:SignedInfo>
   </ds:Signature>
 </p:Aller>

et voici mon code VB :

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
 
    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        Dim resource As String = "C:\temp\64300.xml"
        Dim resource2 As String = "C:\temp\64300-2.xml"
        Dim textdest As String = "11"
        Dim textsource As String = "11"
        Dim xDoc As New XmlDocument
 
        xDoc.Load(resource)
        Dim NatPce As XmlNodeList = xDoc.GetElementsByTagName("NatPce")
        Dim TypPce As XmlNodeList = xDoc.GetElementsByTagName("TypPce")
        For Each node As XmlNode In NatPce
            node.Attributes("V").Value = textdest
        Next node
        For Each node As XmlNode In TypPce
            node.Attributes("V").Value = textsource
        Next node
 xDoc.Save(resource2)
    End Sub
à l'enregistrement il me met des CRLF entre le début et la fin de tout les noeuds ne possédant pas de valeur, il rajoutes des espace au début des nœuds et en fin de fichier (partie signature) il remplace les tabulation par des espaces
j'ai essayé au début en traitant comme du texte (comme je faisais souvent en VBS), mais ça plantais (probablement du fait de la taille du fichier).
j'ai donc trouvé cette solution, mais le format de sortie n'est pas bon...
je cherche depuis plusieurs jour un moyen de modifier les valeurs des nœuds de ce type de fichier XML sans changer le format, mais je n'y arrive pas

si quelqu'un à une idée je suis preneur

Merci d'avance
Olivier