Bonjour,

J'ai développé une petite fonction qui me fusionne deux fichiers XML.

Les deux fichiers XML ont exactement la même structure.

Seulement, j'ai un petit soucis avec les balises fermantes.

Admettons ce fichier XML pour msg1 et msg2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<ns0:Outbound xmlns:ns0="http://Gal_Debatch.Schemas.Outbound_Gal">
  <Header_outbound>
    <Header_outbound_Child1>000</Header_outbound_Child1>
  </Header_outbound>
<Corps_outbound>
    <Type_analyseur />
    <Evt>POSDEP</Evt>
</Corps_outbound>
<Footer_outbound>
    <Footer_outbound_Child1>999</Footer_outbound_Child1>
</Footer_outbound>
</ns0:Outbound>
Une fois cette fonction passé :

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
public static XmlDocument FuncFusion2(XmlDocument msg1, XmlDocument msg2)
        {
            XDocument doc = XDocument.Parse(msg1.OuterXml);
            XDocument doc1 = XDocument.Parse(msg2.OuterXml);
 
            //doc.Save(@"C:\Users\AL0349448\Desktop\msg1.xml");
            //doc1.Save(@"C:\Users\AL0349448\Desktop\msg2.xml");
 
            var headerDoc = doc.Root.Element("Header_outbound");
 
            var corpsDoc = doc.Root.Elements("Corps_outbound");
            var corpsDoc1 = doc1.Root.Elements("Corps_outbound");
            var merge = corpsDoc.Concat(corpsDoc1);
 
 
            var footerDoc = doc.Root.Element("Footer_outbound");
 
            // Création du fichier XDocument de sortie
            XNamespace aw = "http://Gal_Debatch.Schemas.Outbound_Gal";
            doc = new XDocument(
                new XDeclaration("1.0", "utf-8", "yes"),
                new XElement(aw + "Outbound",
                    headerDoc,
                    merge,
                    footerDoc));
 
            //doc.Save(@"C:\Users\AL0349448\Desktop\sortie.xml");
            XmlDocument result = new XmlDocument();
            // Transformer le XDocument en XmlDocument
            result.LoadXml(doc.ToString());
            result.Save(@"C:\Users\AL0349448\Desktop\TroisiemeTransformationFusion2.xml");
            return result;
        }
Tous les champs qui étaient vide (ex : <Type_analyseur />) en entrée se retrouve avec une balise du genre <balise></balise> avec un retour ligne entre les deux au lieu de <balise />.

Y a-t-il un moyen de forcer la balise fermante du style <balise /> lorsque le champs est vide ?

Merci d'avance