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

Wersja tego artykułu dla programu Microsoft Visual Basic .NET: 308066 .

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.


powrót do początku

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)
powrót do początku

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.
powrót do początku

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.
powrót do początku

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.
powrót do początku

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.


powrót do początku

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).
powrót do początku

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.
powrót do początku

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.
powrót do początku

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.
powrót do początku

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)
powrót do początku
Właściwości

Identyfikator artykułu: 311530 — ostatni przegląd: 08.04.2003 — zmiana: 1

Opinia