Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để đọc XML từ một tập tin bằng cách sử dụng Visual C#

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 307548
Một phiên bản Microsoft Visual Basic.net của bài viết này, xin xem 301225.

Bài viết này đề cập đến không gian tên Microsoft Khuôn khổ .NET lớp thư viện sau đây:
  • System.Xml
Tóm tắt
Bài viết này mô tả làm thế nào để sử dụng lớp XmlTextReader để đọc mở rộng đánh dấu kiểm ngôn ngữ (XML) từ một tập tin. XmlTextReader cung cấp phân tích trực tiếp và tokenizing của XML và thực hiện XML 1.0 đặc điểm kỹ thuật cũng như không gian tên trong đặc tả XML từ World Wide Web Consortium (W3C). Bài viết này cung cấp truy cập nhanh, tokenized stream XML thay vì sử dụng một mô hình đối tượng chẳng hạn như tài liệu XML Object Model (DOM).

Yêu cầu

Danh sách sau phác thảo được đề nghị phần cứng, phần mềm, cơ sở hạ tầng mạng và gói bản ghi dịch vụ mà bạn cần:
  • Microsoft Visual Studio 2005 hoặc Microsoft Visual Studio .NET
Bài viết này giả định rằng bạn đang quen thuộc với các chủ đề sau:
  • Thuật ngữ XML
  • Tạo và đọc một tập tin XML

Làm thế nào để đọc XML từ một tập tin

Ví dụ này sử dụng một tập tin tên Books.xml. Bạn có thể tạo tập tin Books.xml của riêng bạn hoặc dùng tập tin mẫu được bao gồm với QuickStart .NET Kit phát triển phần mềm (SDK) trong mục tin thư thoại sau đây:
\Program Files\Microsoft visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
Bạn phải sao chép Books.xml vào mục tin thư thoại \Bin\Debug, nằm dưới mục tin thư thoại trong đó bạn tạo ra dự án này. Books.xml cũng có sẵn để tải về. Xem các "Tài liệu tham khảo"phần cho vị trí tải về.
  1. Bắt đầu Visual Studio 2005 hoặc Visual Studio net.
  2. Tạo ra một mới Visual C# giao diện điều khiển đơn. Bạn tiến hành trực tiếp đến các "Danh sách mã hoàn chỉnh"phần hoặc tiếp tục thông qua các bước sau để xây dựng các ứng dụng.
  3. Đảm bảo rằng các dự án có chứa một tham chiếu đến hội đồng System.Xml.dll .
  4. Xác định bằng cách sử dụng chỉ thị trên không gian tên System.Xml do đó bạn không cần phải vượt qua vòng loại XmlTextReader tuyên bố sau đó trong mã của bạn. Bạn phải sử dụng chỉ thị bằng cách sử dụng trước khi bất kỳ khai báo khác.
    using System.Xml;					
  5. Tạo một thể hiện của đối tượng XmlTextReader một, và điền nó với các tập tin XML. Thông thường, lớp XmlTextReader được sử dụng nếu bạn muốn truy cập vào các XML như các dữ liệu thô mà không có chi phí của một DOM; do đó, các lớp học XmlTextReader cung cấp một cơ chế nhanh hơn cho đọc XML. Lớp XmlTextReader có các nhà thầu khác nhau để xác định vị trí dữ liệu XML. Mã sau đây tạo ra một thể hiện của các lớp học XmlTextReader và tải các tập tin Books.xml. Thêm mã sau vào thủ tục chính Class1.
    XmlTextReader reader = new XmlTextReader ("books.xml");					
  6. Đọc qua các XML. (Lưu ý rằng bước này chứng tỏ một bên ngoài "trong khi" vòng lặp, và tiếp theo hai bước chứng minh làm thế nào để sử dụng vòng lặp đó để đọc các XML). Sau khi bạn tạo các đối tượng XmlTextReader , sử dụng phương pháp đọc để đọc dữ liệu XML. Phương pháp đọc tiếp tục di chuyển qua các tập tin XML tuần tự cho đến khi nó đạt đến cuối của tập tin, lúc đó điểm đọc phương pháp trả về một giá trị của "Sai."
    while (reader.Read()) {    // Do some work here on the data.	Console.WriteLine(reader.Name);}Console.ReadLine();					
  7. Kiểm tra các nút chọn một. xử lí dữ liệu XML, mỗi bản ghi có một loại nút chọn một có thể được xác định từ bất động sản NodeType . Têngiá trị tài sản trả lại tên nút chọn một (các nguyên tố và thuộc tính tên) và giá trị nút chọn một (các văn bản nút) của các nút chọn một hiện tại (hoặc hồ sơ). Liệt kê NodeType xác định loại nút chọn một. Mẫu mã sau sẽ hiển thị tên của các yếu tố và loại tài liệu. Lưu ý rằng mẫu này bỏ qua thuộc tính nguyên tố.
    while (reader.Read()) {    switch (reader.NodeType)     {        case XmlNodeType.Element: // The node is an element.            Console.Write("<" + reader.Name);   Console.WriteLine(">");            break;  case XmlNodeType.Text: //Display the text in each element.            Console.WriteLine (reader.Value);            break;  case XmlNodeType. EndElement: //Display the end of the element.            Console.Write("</" + reader.Name);   Console.WriteLine(">");            break;    }}					
  8. Kiểm tra các thuộc tính. Loại nốt phần tử có thể bao gồm một danh sách các thuộc tính nút chọn một có liên quan với họ. Phương pháp MovetoNextAttribute di chuyển tuần tự qua mỗi thuộc tính trong các yếu tố. Sử dụng các tài sản HasAttributes để kiểm tra xem nút chọn một có thuộc tính bất kỳ. Bất động sản AttributeCount trả về số lượng các thuộc tính cho các nút chọn một hiện tại.
    while (reader.Read()) {       switch (reader.NodeType)        {           case XmlNodeType.Element: // The node is an element.               Console.Write("<" + reader.Name);               while (reader.MoveToNextAttribute()) // Read the attributes.                   Console.Write(" " + reader.Name + "='" + reader.Value + "'");      Console.WriteLine(">");               break;     case XmlNodeType.Text: //Display the text in each element.               Console.WriteLine (reader.Value);               break;     case XmlNodeType. EndElement: //Display the end of the element.               Console.Write("</" + reader.Name);      Console.WriteLine(">");               break;       }   }					
  9. Lưu và đóng dự án của bạn.

Danh sách mã hoàn chỉnh

using System;using System.Xml;namespace ReadXMLfromFile{    /// <summary>    /// Summary description for Class1.    /// </summary>    class Class1    {        static void Main(string[] args)        {            XmlTextReader reader = new XmlTextReader ("books.xml");            while (reader.Read())             {                switch (reader.NodeType)                 {                    case XmlNodeType.Element: // The node is an element.                        Console.Write("<" + reader.Name);                        Console.WriteLine(">");                        break;                    case XmlNodeType.Text: //Display the text in each element.                        Console.WriteLine (reader.Value);                        break;                    case XmlNodeType.EndElement: //Display the end of the element.                        Console.Write("</" + reader.Name);                        Console.WriteLine(">");                        break;                }            }            Console.ReadLine();        }    }}				

Mẫu đầu ra

<bookstore><book><title>The Autobiography of Benjamin Franklin</title><author><first-name>Benjamin</first-name><last-name>Franklin</last-name></author><price>8.99</price></book><book><title>The Confidence Man</title><author><first-name>Herman</first-name><last-name>Melville</last-name></author><price>11.99</price></book><book><title>The Gorgias</title><author><name>Plato</name></author><price>9.99</price></book></bookstore>				

Giải đáp thắc mắc

Khi bạn kiểm tra mã, bạn có thể nhận được thông báo lỗi ngoại lệ sau: không được ngoại lệ: System.Xml.XmlException: khai báo XML bất ngờ. Khai báo XML phải là nút chọn một đầu tiên trong tài liệu, và không có kí tự đại diện khoảng trắng được phép xuất hiện trước khi nó.

Thông tin bổ sung: lỗi hệ thống. Ngoại lệ lỗi xảy ra trên dòng mã sau đây: trong khi
(reader.Read())
Lỗi ngoại lệ gây ra bởi một lệnh xử lí không hợp lệ. Ví dụ, hướng dẫn xử lý có thể chứa dấu kiểm không liên quan. Sau đây là một ví dụ về một lệnh xử lí không hợp lệ:
<?xml version='1.0' ?>
Thẻ xml này có một không gian trước các '<’ bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the=""></’>

TÀI LIỆU THAM KHẢO

Tệp sau có sẵn để tải về từ Microsoft Download Center:
Để biết thêm chi tiết về các lớp học Khuôn khổ .NET XML và C#, ghé thăm Web site sau của Microsoft Developer Network (MSDN):Để biết thêm chi tiết về các class XmlReader , truy cập vào MSDN Web site sau:Để biết thêm chi tiết về làm thế nào để sử dụng XmlReader để đọc dữ liệu XML, hãy truy cập MSDN Web site sau:

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 307548 - Xem lại Lần cuối: 02/09/2014 18:22:00 - Bản sửa đổi: 4.0

Microsoft Visual C# 2008 Express Edition, Microsoft Visual C# 2005, Microsoft Visual C# .NET 2002 Standard Edition

  • kbdownload kbhowtomaster kbmt KB307548 KbMtvi
Phản hồi