JAK: Scalanie danych z dwóch dokumentów XML przy użyciu biblioteki System.Xml w aplikacji programu Visual C# .NET

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 311530 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Ten artykuł został opublikowany wcześniej pod numerem PL311530
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

W tym artykule pokazano, jak użyć obiektu DataSet do scalenia dwóch dokumentów XML. DataSet jest podstawowym obiektem, jeśli chodzi o obsługę scenariuszy, w których używane są rozłączone i rozproszone dane oraz technologia ADO.NET. Obiekt DataSet jest rezydującą w pamięci reprezentacją danych, która zapewnia spójny, relacyjny model programowania, niezależnie od źródła danych. Obiekt DataSet reprezentuje pełny zestaw danych, w tym powiązane tabele, więzy i relacje między tabelami.

Wymagania

Oto lista wymaganych elementów, takich jak sprzęt, oprogramowanie, infrastruktura sieci i dodatki Service Pack:
  • System Microsoft Windows XP, Windows 2000 lub Windows NT 4.0 Service Pack 6a (SP6a)
  • Program Microsoft Visual Studio .NET
W artykule założono, że czytelnik zna następujące tematy:
  • Składnia języka Visual C# .NET
  • Język Extensible Markup Language (XML)

Tworzenie pliku Books1.xml

  1. W menu Start systemu Windows kliknij polecenie Uruchom, wpisz polecenie Notepad.exe, a następnie kliknij przycisk OK.
  2. Zaznacz poniższy kod, kliknij zaznaczenie prawym przyciskiem myszy, a następnie kliknij polecenie Kopiuj. W Notatniku, w menu Edycja kliknij polecenie Wklej.
    <?xml version='1.0' encoding='utf-16'?>
    <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. W menu Plik kliknij polecenie Zapisz.
  4. W oknie dialogowym Zapisywanie jako, na liście rozwijanej Zapisz jako typ kliknij pozycję Wszystkie pliki. W polu tekstowym Nazwa pliku wpisz nazwę Books1.xml, a następnie kliknij przycisk Zapisz.

Tworzenie pliku Books2.xml

  1. W Notatniku utwórz nowy plik tekstowy o nazwie Books2.xml.
  2. Skopiuj i wklej następujący kod XML do pliku Books2.xml:
    <?xml version='1.0' encoding='utf-16'?>
    <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. W menu Plik kliknij polecenie Zapisz.
  4. W oknie dialogowym Zapisywanie jako, na liście rozwijanej Zapisz jako typ kliknij pozycję Wszystkie pliki. W polu tekstowym Nazwa pliku wpisz nazwę Books2.xml, a następnie kliknij przycisk Zapisz.

Procedura tworzenia aplikacji programu Visual C# .NET

  1. Uruchom program Visual Studio .NET, a następnie utwórz nowy projekt aplikacji konsoli języka Visual C#.
  2. Dodaj następujący kod na początku okna Code:
    using System;
    using System.Xml;
    using System.IO;
    using System.Data ;
  3. Skopiuj i wklej następujący kod w sekcji 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("Zakończono scalanie dokumentów XML");
    	}
    	catch (System.Exception ex)
    	{
    		Console.Write(ex.Message);
    	}
    Console.Read();	
  4. Skompiluj i uruchom aplikację. Zauważ, że w oknie Console pojawia się komunikat „Zakończono scalanie dokumentów XML”.
  5. Zamknij okno Console. Zauważ, że w określonej lokalizacji został utworzony plik Books.xml.
  6. Otwórz plik Books.xml. Zauważ, że dane z pliku Books2.xml zostały dołączone na końcu pliku Books1.xml.

Różne scenariusze scalania dokumentów XML

Scalanie dokumentów XML o tej samej strukturze

Wynik scalenia dokumentów XML o tej samej strukturze pokazano w poprzednim kodzie przykładowym programu Visual C# .NET.

Scalanie dokumentów XML o różnych strukturach

  1. Otwórz plik Books2.xml i zastąp kod XML następującym kodem XML:
    <?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. Zapisz plik Books2.xml.
  3. Uruchom ponownie projekt aplikacji programu Visual C# .NET. Zauważ, że węzły z drugiego dokumentu (Books2.xml) zostały dołączone do pierwszego dokumentu XML (Books1.xml).

Scalanie dokumentów XML o podobnej strukturze, gdzie drugi dokument XML zawiera dodatkowe elementy

  1. Otwórz plik Books2.xml i zastąp kod XML następującym kodem XML:
    <?xml version='1.0' encoding='utf-16'?>
    <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. Zapisz plik Books2.xml.
  3. Uruchom ponownie projekt aplikacji programu Visual C# .NET. Zauważ, że węzły z drugiego dokumentu zostały dołączone do pierwszego dokumentu XML.

Scalanie dokumentów XML o podobnej strukturze, gdzie drugi dokument XML zawiera atrybuty

  1. Otwórz plik Books2.xml i zastąp kod XML następującym kodem XML:
    <?xml version='1.0' encoding='utf-16'?>
    <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. Zapisz plik Books2.xml.
  3. Uruchom ponownie projekt aplikacji programu Visual C# .NET. Zauważ, że węzły z drugiego dokumentu zostały dołączone do pierwszego dokumentu XML, a struktura jest taka sama, jak struktura pierwszego dokument XML.

Scalanie dokumentów XML o podobnej strukturze, gdzie pierwszy dokument XML zawiera atrybuty

  1. Zmodyfikuj kod języka Visual C#, jak następuje, tak aby dokument Books1.xml został dołączony do dokumentu 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("Zakończono scalanie dokumentów XML");
    	}
    	catch (System.Exception ex)
    	{
    		Console.Write(ex.Message);
    	}
    Console.Read();	
  2. Uruchom ponownie projekt aplikacji programu Visual C# .NET. Zauważ, że wynikowy dokument XML dołącza węzły z dokumentu Books1.xml do dokumentu Books2.xml. Ponadto zauważ, że wszystkie węzły Book zawierają atrybut „genre”.

    W ten sposób, w zależności od struktury pierwszego dokumentu XML, drugi dokument XML jest modyfikowany w taki sposób, że wynikowy dokument XML jest bogatszy.

Materiały referencyjne

Aby uzyskać dodatkowe informacje, kliknij numer artykułu poniżej w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
286817 HOWTO: Merge Data in Two XML Documents by Programming the Document Object Model (DOM)

Właściwości

Numer ID artykułu: 311530 - Ostatnia weryfikacja: 9 kwietnia 2003 - Weryfikacja: 2.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework Class Libraries 1.1
Słowa kluczowe: 
kbhowto kbhowtomaster kbgrpdsvbdb kbgrpdsmsxml KB311530

Przekaż opinię

 

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