วิธีการอ่าน XML จากแฟ้ม โดยใช้ Visual C#

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 307548 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีการใช้คลาXmlTextReaderอ่าน Extensible Markup Language (XML) จากแฟ้ม XmlTextReaderแสดงการแยกวิเคราะห์ และ tokenizing ของ XML และข้อมูลจำเพาะ implements 1.0 ใน XML รวมทั้ง namespaces ในข้อมูลจำเพาะเกี่ยวกับ XML จาก World Wide Web Consortium (W3C) โดยตรง บทความนี้ให้การเข้าถึงกระแสข้อมูลอย่างรวดเร็ว tokenized การ XML แทนที่จะใช้รูปแบบวัตถุเช่นแบบ XML เอกสารวัตถุแบบจำลอง (DOM)

ความต้องการ

รายการต่อไปนี้จัดเค้าร่างแนะนำฮาร์ดแวร์ ซอฟต์แวร์ โครงสร้างเครือข่าย และ service pack ที่คุณต้องการ:
  • Microsoft Visual Studio 2005 หรือ Microsoft Visual Studio .NET
บทความนี้อนุมานว่า คุณคุ้นเคยกับหัวข้อต่อไปนี้:
  • คำศัพท์ XML
  • การสร้างและอ่านไฟล์ XML

วิธีการอ่าน XML จากแฟ้ม

ตัวอย่างนี้ใช้แฟ้มที่ชื่อ Books.xml คุณสามารถสร้างแฟ้ม Books.xml ของคุณเอง หรือใช้แฟ้มตัวอย่างที่มาพร้อมกับ QuickStarts ชุดพัฒนาซอฟต์แวร์ของ.NET (SDK) ในโฟลเดอร์ต่อไปนี้:
.NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs visual Studio \Program Files\Microsoft
คุณต้องคัดลอก Books.xml ไปยังโฟลเดอร์ \Bin\Debug ซึ่งอยู่ภายใต้โฟลเดอร์ที่คุณสร้างโครงการนี้ ยังมี Books.xml ดาวน์โหลด ดู "ข้อมูลอ้างอิง"ส่วนตำแหน่งการดาวน์โหลด
  1. Start Visual Studio 2005 หรือ Visual Studio .NET
  2. สร้างแบบใหม่ Visual C# คอนโซลแอพพลิเคชัน คุณดำเนินการโดยตรงไป "รายการรหัสโดยสมบูรณ์"ส่วน หรือดำเนินต่อตามขั้นตอนเหล่านี้เพื่อสร้างโปรแกรมประยุกต์
  3. ตรวจสอบให้แน่ใจว่า โครงการที่ประกอบด้วยการอ้างอิงถึงแอสเซมบลีSystem.Xml.dll
  4. ระบุการใช้คำสั่งบนSystem.Xml namespace เพื่อให้คุณไม่จำเป็นต้องมีสิทธิได้รับการประกาศการXmlTextReaderในภายหลังในรหัสของคุณ คุณต้องใช้คำสั่งโดยใช้ก่อนการประกาศอื่น ๆ
    using System.Xml;
    					
  5. สร้างอินสแตนซ์ของวัตถุXmlTextReaderและเติมข้อมูลกับแฟ้ม XML โดยทั่วไป ใช้คลาสXmlTextReaderถ้าคุณต้องการใช้ XML เป็นข้อมูลดิบโดยไม่มีค่าโสหุ้ยของ DOM เป็น ดังนั้น คลาXmlTextReaderมีกลไกเร็วกว่าอ่าน XML คลาXmlTextReaderมี constructors ที่แตกต่างกันเพื่อระบุตำแหน่งของข้อมูล XML รหัสต่อไปนี้สร้างอินสแตนซ์ของคลาXmlTextReaderและโหลดแฟ้ม Books.xml เพิ่มรหัสต่อไปนี้กับขั้นตอนหลักของ Class1
    XmlTextReader reader = new XmlTextReader ("books.xml");
    					
  6. อ่านผ่าน XML (โปรดสังเกตว่า ขั้นตอนนี้อธิบายการภายนอก "ลูปขณะ" และขั้นตอนถัดไปสองที่แสดงให้เห็นถึงวิธีการใช้การวนรอบที่อ่าน XML) หลังจากที่คุณสร้างวัตถุXmlTextReaderใช้วิธีการอ่านในการอ่านข้อมูล XML วิธีการอ่านยังคงมีอยู่เพื่อย้ายไปตามแฟ้ม XML ตามลำดับจนกว่าจะถึงจุดสิ้นสุดของแฟ้ม ที่ซึ่งชี้กลับวิธีอ่านค่าเป็น "False"
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
    					
  7. ตรวจสอบโหน การประมวลผลข้อมูล XML แต่ละระเบียนมีโหนดชนิดที่สามารถถูกกำหนดจากNodeTypeคุณสมบัติ คุณสมบัติของชื่อและค่าส่งกลับชื่อโหน (องค์ประกอบและแอตทริบิวต์ชื่อ) และค่าโหนด (ข้อความโหน) ของปัจจุบันโหน (หรือระเบียน) การแจงนับNodeTypeกำหนดชนิดของโหน ตัวอย่างรหัสต่อไปนี้แสดงชื่อขององค์ประกอบและชนิดเอกสาร โปรดสังเกตว่า ตัวอย่างนี้ละเว้นแอตทริบิวต์ขององค์ประกอบ
    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. ตรวจสอบแอตทริบิวต์ ชนิดของโหนดองค์ประกอบสามารถรวมรายชื่อของโหนดที่แอตทริบิวต์ที่เกี่ยวข้องกับ วิธีการMovetoNextAttributeย้ายตามลำดับ โดยแต่ละแอตทริบิวต์ในองค์ประกอบ ใช้คุณสมบัติHasAttributesเพื่อทดสอบว่าโหนมีแอตทริบิวต์ใด ๆ คุณสมบัติAttributeCountส่งกลับหมายเลขของแอตทริบิวต์สำหรับโหนดปัจจุบัน
    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. บันทึก และปิดโครงการของคุณ

รายการรหัสโดยสมบูรณ์

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();
        }
    }
}
				

ตัวอย่างผลลัพธ์

<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>
				

การแก้ไขปัญหา

เมื่อคุณทดสอบรหัส คุณอาจได้รับข้อความแสดงข้อยกเว้นข้อผิดพลาดต่อไปนี้: ข้อยกเว้นเกิด: System.Xml.XmlException: การประกาศ XML ที่ไม่คาดคิดได้ การประกาศ XML ต้องเป็นโหนดแรกในเอกสาร และไม่มีอักขระช่องว่างสีขาวที่ได้รับอนุญาตให้แสดงอยู่ก่อนหน้านั้น

ข้อมูลเพิ่มเติม: ข้อผิดพลาดของระบบ ข้อผิดพลาดข้อยกเว้นเกิดขึ้นบนบรรทัดของรหัสต่อไปนี้: ในขณะที่
(reader.Read())
ข้อผิดพลาดข้อยกเว้นเกิดจากคำสั่งการประมวลผลไม่ถูกต้อง ตัวอย่างเช่น คำสั่งการประมวลผลอาจประกอบด้วยช่องว่างไม่ ต่อไปนี้เป็นตัวอย่างของคำสั่งการประมวลผลไม่ถูกต้อง:
<?xml version='1.0' ?>
แท็ก xml นี้มีช่องว่างก่อนหน้านี้ '<’ bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the="" error.=""></’>

ข้อมูลอ้างอิง

แฟ้มต่อไปนี้จะพร้อมสำหรับการดาวน์โหลดจากศูนย์ดาวน์โหลดของไมโครซอฟท์:
ยุบรูปภาพนี้ขยายรูปภาพนี้
ดาวน์โหลด
ดาวน์โหลดแพคเกจ Books.exe ทันที
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับระดับชั้นของ.NET Framework XML และ C# แวะไปเว็บไซต์ต่อไปนี้ของ Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/en-us/magazine/cc302158.aspx
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับXmlReaderคลาส แวะไปที่ MSDN เว็บไซต์ต่อไปนี้:
.aspx http://msdn2.microsoft.com/en-us/library/system.xml.xmlreader (vs.71)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการใช้XmlReaderอ่านข้อมูล XML แวะไปที่ MSDN เว็บไซต์ต่อไปนี้:
.aspx http://msdn2.microsoft.com/en-us/library/aa720470 (VS.71)

.aspx http://msdn2.microsoft.com/en-us/library/tfz3cz6w (vs.71)

คุณสมบัติ

หมายเลขบทความ (Article ID): 307548 - รีวิวครั้งสุดท้าย: 16 มกราคม 2556 - Revision: 6.0
ใช้กับ
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Keywords: 
kbdownload kbhowtomaster kbmt KB307548 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:307548

ให้ข้อเสนอแนะ

 

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