Comment faire pour fusionner les données de deux documents XML Using System.XML en utilisant Visual c# .NET

Traductions disponibles Traductions disponibles
Numéro d'article: 311530 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article vous montre comment utiliser un objet DataSet pour fusionner deux documents XML. Le DataSet objet est central de la prise en charge déconnectées et distribuées les scénarios de données avec ADO.NET. Le DataSet est une représentation résidente en mémoire de données qui propose un modèle de programmation cohérent, relationnel quelle que soit la source de données. Le DataSet représente un ensemble complet de données, y compris des tables connexes, des contraintes et des relations entre les tables.

Configuration requise

La liste suivante présente le matériel, logiciels, infrastructure de réseau et service packs dont vous avez besoin :
  • Microsoft Windows XP, Windows 2000 ou Windows NT 4.0 Service Pack 6 a (SP6a)
  • Microsoft Visual Studio .NET
Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :
  • Syntaxe Visual c# .NET
  • (XML) Extensible Markup Language

Créer le fichier Books1.xml

  1. Dans le menu Démarrer , cliquez sur Exécuter , tapez Notepad.exe et puis cliquez sur OK .
  2. Sélectionnez le code suivant, cliquez avec le bouton droit sur le code et puis cliquez sur Copier . Dans le bloc-notes, dans le menu Edition , cliquez sur Coller .
    <?xml version="1.0"?>
    <catalog>
       <book id="bk101">
          <author>Gambardella, Matthew</author>
          <title>XML Developer's Guide</title>
          <genre>Computer</genre>
          <price>44.95</price>
       </book>
       <book id="bk102">
          <author>Jeanette, Dasha</author>
          <title>Quack the Duck</title>
          <genre>Fantasy</genre>
          <price>5.95</price>
       </book>
    </catalog>
    					
  3. Dans le menu fichier , cliquez sur Enregistrer .
  4. Dans la boîte de dialogue Enregistrer sous , dans la zone de liste déroulante Type , cliquez sur Tous les fichiers . Dans la zone de texte Nom de fichier , tapez Books1.xml et puis cliquez sur Enregistrer .

Créer le fichier Books2.xml

  1. Dans le bloc-notes, créez un nouveau fichier texte nommé Books2.xml.
  2. Copiez et collez le code XML suivant dans Books2.xml :
    <?xml version="1.0"?>
    <catalog>
    <book id="bk106">
          <author>Randall, Cynthia</author>
          <title>Lover Birds</title>
          <genre>Romance</genre>
          <price>4.95</price>
       </book>
       <book id="bk107">
          <author>Vinzovskaia, Irina</author>
          <title>Piano Fort A</title>
          <genre>Romance</genre>
          <price>4.95</price>
       </book>
    </catalog>
    					
  3. Dans le menu fichier , cliquez sur Enregistrer .
  4. Dans la boîte de dialogue Enregistrer sous , dans la zone de liste déroulante Type , cliquez sur Tous les fichiers . Dans la zone de texte Nom de fichier , tapez Books2.xml et puis cliquez sur Enregistrer .

Procédure pour créer l'application Visual c# .NET

  1. Démarrez Visual Studio .NET, puis créez un nouveau projet Application Console Visual c#.
  2. Ajoutez le code suivant en haut de la fenêtre code :
    using System;
    using System.Xml;
    using System.IO;
    using System.Data ;
    					
  3. Copiez et collez le code suivant dans static void main (string [] args):
    try
    	{
    		XmlTextReader xmlreader1 = new XmlTextReader("C:\\Books1.xml");
    		XmlTextReader xmlreader2 = new XmlTextReader("C:\\Books2.xml");
    
    		DataSet ds = new DataSet();
    		ds.ReadXml(xmlreader1);
    		DataSet ds2 = new DataSet();
    		ds2.ReadXml(xmlreader2);
    		ds.Merge(ds2);
    		ds.WriteXml("C:\\Books.xml");
    		Console.WriteLine("Completed merging XML documents");
    	}
    	catch (System.Exception ex)
    	{
    		Console.Write(ex.Message);
    	}
    Console.Read();	
    					
  4. Générez et exécutez l'application. Notez que le message «Terminé la fusion de documents XML» s'affiche dans la fenêtre de console.
  5. Fermez la fenêtre de console. Notez que le fichier Books.XML est créé dans le chemin que vous spécifiez.
  6. Ouvrez Books.Xml. Notez que les données de Books2.xml sont ajoutées à la fin pour Books1.xml.

Différents scénarios de document XML

Fusion de documents XML ayant la même structure

L'exemple de Visual c# précédent illustre la sortie de documents XML avec la même structure.

Fusion de documents XML qui ont des structures différentes

  1. Ouvrez Books2.xml et remplacez le code XML par le code XML suivant :
    <?xml version="1.0" ?>
    <SampleData>
    <Customer>
              <CustomerName>Bob Frapples</CustomerName>
              <PricePerUnit>5.95</PricePerUnit>
              <ClosingDate>2001-12-16</ClosingDate>
    </Customer>
    <Customer>
              <CustomerName>Bob Frapples</CustomerName>
              <PricePerUnit>5.95</PricePerUnit>
              <ClosingDate>2001-12-16</ClosingDate>
    </Customer>
    </SampleData>
    					
  2. Enregistrer Books2.xml.
  3. Exécutez à nouveau le projet Visual c# .NET. Notez que les n?uds du deuxième document (Books2.xml) sont ajoutés le premier document XML (Books1.xml).

Fusion de documents XML avec structure similaire dans second document contient des éléments supplémentaires

  1. Ouvrez Books2.xml et remplacez le code XML par le code XML suivant :
    <?xml version="1.0"?>
    <catalog>
    <book id="bk106">
          <author>Randall, Cynthia</author>
          <title>Lover Birds</title>
          <genre>Romance</genre>
          <price>4.95</price>
          <publish_date>2000-09-02</publish_date>
          <description>When Carla meets Paul at an ornithology 
          conference, tempers fly as feathers get ruffled.</description>
       </book>
       <book id="bk107">
          <author>Vinzovskaia, Irina</author>
          <title>Piano Fort A</title>
          <genre>Romance</genre>
          <price>4.95</price>
          <publish_date>2000-11-02</publish_date>
          <description>Two young pianists strike a chord when they fight a 
          pitched battle to stop the metro gnomes at a key base.</description>
       </book>
    </catalog>
    					
  2. Enregistrer Books2.xml.
  3. Exécutez à nouveau le projet Visual c# .NET. Notez que les n?uds du deuxième document sont ajoutés au premier document XML.

Fusion de documents XML avec structure similaire dans second document contient des attributs

  1. Ouvrez Books2.xml et remplacez le code XML par le code XML suivant :
    <?xml version="1.0"?>
    <catalog>
    <book id="bk106" genre="Romance">
          <author>Randall, Cynthia</author>
          <title>Lover Birds</title>
          <price>4.95</price>
       </book>
       <book id="bk107" genre="Romance">
          <author>Vinzovskaia, Irina</author>
          <title>Piano Fort A</title>
          <price>4.95</price>
       </book>
       <book id="bk108" genre="Horror">
          <author>de Dogg, Jazz</author>
          <title>Night of the Flea</title>
          <price>4.95</price>
       </book>
       </catalog>
    					
  2. Enregistrer Books2.xml.
  3. Exécutez à nouveau le projet Visual c# .NET. Notez que les n?uds du deuxième document sont ajoutés au premier document XML et la structure est identique à celle du premier document XML.

Fusion de documents XML avec structure similaire dans premier document contient des attributs

  1. Modifiez le code Visual c# comme suit afin que Books1.xml est ajouté à Books2.xml :
    try
    	{
    		XmlTextReader xmlreader1 = new XmlTextReader("C:\\Books2.xml");
    		XmlTextReader xmlreader2 = new XmlTextReader("C:\\Books1.xml");
    
    		DataSet ds = new DataSet();
    		ds.ReadXml(xmlreader1);
    		DataSet ds2 = new DataSet();
    		ds2.ReadXml(xmlreader2);
    		ds.Merge(ds2);
    		ds.WriteXml("C:\\Books.xml");
    		Console.WriteLine("Completed merging XML documents");
    	}
    	catch (System.Exception ex)
    	{
    		Console.Write(ex.Message);
    	}
    Console.Read();	
    					
  2. Exécutez à nouveau le projet Visual c# .NET. Notez que le document XML résultant ajoute les n?uds Books1.xml Books2.xml. En outre, notez que tous les n?uds book contient l'attribut "genre".

    Par conséquent, selon la structure du premier document XML, le second document XML est modifié afin que le XML résultant est plus significatif.

Références

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
286817Comment faire pour fusionner des données dans deux documents XML par programmation le modèle DOM (DOM)

Propriétés

Numéro d'article: 311530 - Dernière mise à jour: jeudi 15 juillet 2004 - Version: 2.5
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C# .NET 2002 Initiation
  • Microsoft Visual C# .NET 2003 Initiation
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Mots-clés : 
kbmt kbhowtomaster kbio kbsystemdata KB311530 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 311530
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com