CARA: Mengakses Data XML menggunakan DOM di.NET Framework dengan Visual C#.NET

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 317664 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini selangkah demi selangkah menjelaskan cara mengakses data yang dibutuhkan dalam extensible markup language (XML) dokumen pemrograman dengan menggunakan System.xml.XmlDocument kelas dan kelas terkait.

The System.xml.XmlDocument kelas mengimplementasikan parser XML Document Object Model (DOM) inti dari.NET Framework. The System.xml.XmlDocument kelas ini kompatibel dengan World Wide Web Consortium (W3C) DOM tingkat 1 dan tingkat 2 inti standar.

XML konten dapat diklasifikasikan secara luas ke koleksi node dan atribut dari simpul tersebut. Anda dapat menggunakan DOM model implementasi System.xml untuk permintaan atau mengakses node dan atribut dokumen XML. DOM implmentation dari System.xml menyediakan beberapa cara untuk mengakses node ini dan atribut.

Persyaratan

Daftar berikut menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang diperlukan:
  • Microsoft Windows XP, Windows 2000, atau Windows NT 4.0 Paket Layanan 6a
  • Akses Data (Microsoft) komponen (MDAC) 2.6 atau yang lebih baru
  • Microsoft Visual Studio.NET
Artikel ini mengasumsikan bahwa Anda sudah familiar dengan topik-topik berikut:
  • Visual C#.Sintaks bersih
  • XML dan standar-standar terkait

System.xml metode dan properti

Bagian ini menjelaskan beberapa metode dan properti dari System.xml kelas. Untuk selengkapnya, lihat Microsoft Framework.NET Software Development Kit (SDK) dokumentasi.

Anda dapat menggunakan SelectNodes dan SelectSingleNode metode yang XmlDocument kelas mengimplementasikan untuk menentukan dan mengeksekusi query XPath terhadap data XML yang dimuat ke dalam DOM. Untuk informasi tambahan tentang bagaimana menggunakan metode ini dan untuk melihat contoh kode yang relevan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
318499 CARA: Menggunakan System.Xml.XmlDocument kelas untuk melaksanakan XPath Queries Visual C#.NET
Untuk informasi tambahan tentang cara untuk mengeksekusi kueri XPath dengan System.xml kelas, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
313828 INFO: Roadmap untuk mengeksekusi XPath Queries dalam.Aplikasi NET
Untuk mengakses data, Anda biasanya memilih atau menavigasi ke satu atau lebih simpul diperlukan dan kemudian menggunakan hasil satu atau lebih simpul untuk memanipulasi isi XML. Berikut adalah daftar dari relevan System.xml properti dan metode:
  • InnerText dan InnerXml. Menemukan nilai-nilai dipenggal semua node anak atau markup semua node anak masing-masing.
  • Nilai. Menyediakan akses ke nilai simpul.
  • Atribut. Menemukan koleksi atribut node saat ini.
  • FirstChild, LastChild, dan ChildNodes. Menyediakan akses ke node pertama, node terakhir, atau semua anak node node saat ini.
  • NextSibling dan PreviousSibling. Menyediakan akses ke node segera mengikuti dan segera mendahului masing-masing.
  • DocumentElement. Menyediakan akses ke akar XmlElement dokumen.
  • Item. Menemukan elemen anak tertentu.
  • NodeType (jenis XmlNodeType). Menunjukkan jenis node saat ini; misalnya atribut, elemen, atau teks.
  • XmlNodeType. Pencacahan memegang semua jenis simpul mungkin.
  • GetElementsByTagName dan GetElementByID. Menyediakan akses ke satu atau lebih elemen XML tertentu.
Anda dapat menggunakan beberapa properti dan metode lain untuk mengakses konten XML, seperti Nama dan NameTable. Untuk daftar lengkap, lihat Microsoft.NET Framework SDK dokumentasi.

Mengakses Data dari dokumen XML

Contoh berikut menunjukkan cara menggunakan beberapa metode ini untuk mengakses XML data. Baca komentar inline untuk memahami bagaimana kode bekerja.
  1. Gunakan Notepad atau editor teks yang serupa untuk menyimpan data berikut sebagai sebuah file bernama C:\Q317664.xml:
    <?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?>
    <Collection>
       <Book Id='1' ISBN='1-100000ABC-200'>
          <Title>Principle of Relativity</Title>
          <!-- Famous physicist -->      
          <Author>Albert Einstein</Author>
          <Genre>Physics</Genre>
       </Book>
       <Book Id='2' ISBN='1-100000ABC-300'>
          <!-- Also came as a TV serial -->
          <Title>Cosmos</Title>
          <Author>Carl Sagan</Author>
          <Genre>Cosmology</Genre>
       </Book>
       <!-- Add additional books here -->
    </Collection>
    					
  2. Buat baru Visual C#.NET aplikasi konsol proyek.
  3. Ganti kode dalam Class1.cs dengan kode berikut. Contoh ini memuat dokumen XML dari file yang mewakili koleksi buku dan kemudian mengakses konten menggunakan beberapa metode yang disebutkan sebelumnya.
    using System;
    using System.Xml;
    using System.Text;
    
    namespace ConsoleApplication1
    {
       class Class1
       {
          public static int GetNodeTypeCount(XmlNode node, XmlNodeType nodeType)
          {
             // Recursively loop through the given node and return 
             // the number of occurences of a specific nodeType.
             int i = 0;
    
             if (node.NodeType == nodeType)
                i = i + 1;
    
             if (node.HasChildNodes)
                foreach (XmlNode cNode in node.ChildNodes)
                   i = i + GetNodeTypeCount(cNode, nodeType);
    
             return i;
          }
    
          [STAThread]
          static void Main(string[] args)
          {
             try
             {
                // Create an Xml document instance and load XML data.
                XmlDocument doc  = new XmlDocument();
                doc.Load("C:\\Q317664.xml"); 
                       
                // 1. Select all the Book titles by using an XPath query.
                XmlNodeList nodeList = doc.SelectNodes("//Book/Title");
                XmlNode node;
                Console.WriteLine("{0}", "TITLES LIST: ");
                foreach (XmlNode nd in nodeList)
                   Console.WriteLine("{0}", nd.InnerText);
    
                // 2. Read the XmlDeclartion values.
                XmlDeclaration decl = (XmlDeclaration) doc.FirstChild;
                Console.WriteLine("\n{0}", "XML DECLARTION:");
                Console.WriteLine("{0}", "Version    " + "= " + decl.Version);
                Console.WriteLine("{0}", "Encoding   " + "= " + decl.Encoding);
                Console.WriteLine("{0}", "Standalone " + "= " + decl.Standalone);
    
                // 3. Move to the first node of DOM and get all of its attributes.
                XmlElement root = doc.DocumentElement;
                node = root.FirstChild;
                Console.WriteLine("\n{0}", "ATTRIBUTES OF THE FIRST CHILD:");
                foreach  (XmlAttribute attr in node.Attributes)
                   Console.WriteLine("{0}", attr.Name + " = " + attr.InnerText);
    
                // 4. Navigate to the child nodes of the first Book node.
                Console.WriteLine("\n{0}", "FIRST NODE'S CHILDREN:");
                if (node.HasChildNodes)
                   foreach (XmlNode cNode in node.ChildNodes)
                      Console.WriteLine("{0}", cNode.OuterXml);
    
                // 5. Navigate to the next sibling of the first Book node.
                node = node.NextSibling;
                Console.WriteLine("\n{0}", "NEXT SIBLING:");
                if (node != null)
                   Console.WriteLine("{0}", node.OuterXml);
                
                // 6. Get the parent node details of the current node.
                Console.WriteLine("\n{0}", "PARENT NODE NAME = " + node.ParentNode.Name);
                Console.WriteLine("{0}", "PARENT NODE HAS " + node.ParentNode.ChildNodes.Count + " CHILD NODES");
                Console.WriteLine("{0}", "PARENT NODE'S NAMESPACE URI = " + node.ParentNode.NamespaceURI);
    
                // 7. Count the number of Comment nodes in the document.
                // You could search for other types in the same way.
                int commentNodes = Class1.GetNodeTypeCount(doc.DocumentElement, XmlNodeType.Comment);
                Console.WriteLine("\n{0}\n", "NUMBER OF COMMENT NODES IN THE DOC = " + commentNodes);
                Console.ReadLine();
             }
             catch(XmlException xmlEx)        // Handle the XML Exceptions here.         
             {
                Console.WriteLine("{0}", xmlEx.Message);
             }
             catch(Exception ex)              // Handle the Generic Exceptions here.
             {
                Console.WriteLine("{0}", ex.Message);
             }
          }
       }
    }
    					
  4. Mengkompilasi dan kemudian menjalankan aplikasi.

    CATATAN: Berkas Q317664.xml harus dalam folder yang sama sebagai file eksekusi (atau Anda dapat mengubah path file dalam kode).

    Output harus menyerupai yang berikut ini:
    TITLES LIST:
    Principle of Relativity
    Cosmos
    
    XML DECLARTION:
    Version    = 1.0
    Encoding   = ISO-8859-1
    Standalone = yes
    
    ATTRIBUTES OF THE FIRST CHILD:
    Id = 1
    ISBN = 1-100000ABC-200
    
    FIRST NODE'S CHILDREN:
    <Title>Principle of Relativity</Title>
    <!-- Famous physicist -->
    <Author>Albert Einstein</Author>
    <Genre>Physics</Genre>
    
    NEXT SIBLING:
    <Book Id="2" ISBN="1-100000ABC-300"><!-- Also came as a TV serial --><Title>Cosm
    os</Title><Author>Carl Sagan</Author><Genre>Cosmology</Genre></Book>
    
    PARENT NODE NAME = Collection
    PARENT NODE HAS 3 CHILD NODES
    PARENT NODE'S NAMESPACE URI =
    
    NUMBER OF COMMENT NODES IN THE DOC = 3
    					

REFERENSI

Untuk informasi tambahan, kunjungi Web site Microsoft berikut:
System.xml Namespace
http://MSDN.Microsoft.com/Library/default.asp?URL=/Library/en-US/cpref/HTML/frlrfsystemxml.asp

XML
http://MSDN.Microsoft.com/XML
Untuk informasi tambahan, klik nomor artikel di bawah ini untuk melihat artikel di dalam Basis Pengetahuan Microsoft:
313824 INFO: Roadmap untuk pemrograman XML dengan DOM-Model Parser di.NET Framework
313651 INFO: Roadmap untuk XML di.NET Framework

Properti

ID Artikel: 317664 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Kata kunci: 
kbbcl kbhowtomaster kbmt KB317664 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:317664

Berikan Masukan

 

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