Αυτήν τη στιγμή είστε εκτός σύνδεσης, σε αναμονή για επανασύνδεση στο Internet

Τρόπος ανάγνωσης XML από αρχείο με χρήση της Visual C#

Για μια έκδοση αυτού του άρθρου για Microsoft Visual Basic .NET, ανατρέξτε στο άρθρο 301225.

Αυτό το άρθρο αναφέρεται στο ακόλουθο πεδίο ονομάτων βιβλιοθήκης κλάσεων του Microsoft .NET Framework:
  • System.Xml
Περίληψη
Αυτό το άρθρο περιγράφει τον τρόπο χρήσης της κλάσης XmlTextReader για την ανάγνωση γλώσσας XML (Extensible Markup Language) από ένα αρχείο. Το XmlTextReader παρέχει απευθείας ανάλυση και κωδικοποίηση της γλώσσας XML και εφαρμόζει την προδιαγραφή XML 1.0 καθώς και τα πεδίο ονομάτων στην προδιαγραφή XML από το W3C (World Wide Web Consortium). Αυτό το άρθρο παρέχει γρήγορη, κωδικοποιημένη πρόσβαση ροής στην XML αντί να χρησιμοποιεί ένα μοντέλο αντικειμένου, όπως το DOM (Document Object Model) της XML.

Απαιτήσεις

Η ακόλουθη λίστα περιγράφει το υλικό, το λογισμικό, την υποδομή δικτύου που συνιστώνται και τα service pack που χρειάζεστε:
  • Microsoft Visual Studio 2005 ή Microsoft Visual Studio .NET
Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τα ακόλουθα θέματα:
  • Ορολογία XML
  • Δημιουργία και ανάγνωση αρχείων XML

Τρόπο ανάγνωσης XML από ένα αρχείο

Αυτό το παράδειγμα, χρησιμοποιεί ένα αρχείο με το όνομα Books.xml. Μπορείτε να δημιουργήσετε το δικό σας αρχείο Books.xml ή να χρησιμοποιήσετε το δείγμα αρχείου που περιλαμβάνεται με το .NET Software Development Kit (SDK) QuickStarts στον ακόλουθο φάκελο:
\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
Πρέπει να αντιγράψετε το Books.xml στο φάκελο \Bin\Debug, ο οποίος βρίσκεται στο φάκελο στον οποίο δημιουργείτε αυτό το έργο. Το Books.xml είναι επίσης διαθέσιμο για λήψη. Για να βρείτε τη θέση λήψης, ανατρέξτε στην ενότητα "Αναφορές (References)".
  1. Ξεκινήστε το Visual Studio 2005 ή το Visual Studio .NET.
  2. Δημιουργήστε μια νέα εφαρμογή κονσόλας Visual C#. Προχωρήστε κατευθείαν στην ενότητα "Πλήρης λίστα κώδικα" ή συνεχίστε μέσω αυτών των βημάτων για να δημιουργήσετε την εφαρμογή.
  3. Βεβαιωθείτε ότι το έργο περιέχει μια αναφορά στη συγκρότηση System.Xml.dll.
  4. Καθορίστε την οδηγία using στο πεδίο ονομάτων System.Xml έτσι ώστε να μην απαιτείται να τροποποιήσετε αργότερα τις δηλώσεις XmlTextReader στον κώδικά σας. Πρέπει να χρησιμοποιήσετε την οδηγία using πριν από οποιεσδήποτε άλλες δηλώσεις.
    using System.Xml;					
  5. Δημιουργία εμφάνισης ενός αντικειμένου XmlTextReader και συμπλήρωσή της με το αρχείο XML. Συνήθως, η κλάση XmlTextReader χρησιμοποιείται όταν χρειάζεται να αποκτήσετε πρόσβαση στο XML ως μη επεξεργασμένα δεδομένα, χωρίς την επιβάρυνση ενός DOM, δηλαδή, η κλάση XmlTextReader παρέχει έναν ταχύτερο μηχανισμό ανάγνωσης της XML. Η κλάση XmlTextReader έχει διαφορετικές κατασκευές για τον καθορισμό της θέσης των δεδομένων XML. Ο παρακάτω κώδικας δημιουργεί μια εμφάνιση της κλάσης XmlTextReader και φορτώνει το αρχείο Books.xml. Προσθέστε τον ακόλουθο κώδικα στην κύρια διαδικασία του Class1.
    XmlTextReader reader = new XmlTextReader ("books.xml");					
  6. Διαβάστε την XML. (Σημειώστε ότι αυτό το βήμα επιδεικνύει έναν εξωτερικό βρόχο "ενώ" (while) και τα δύο επόμενα βήματα επιδεικνύουν τον τρόπο χρήσης αυτού του βρόχου για την ανάγνωση της XML.) Μετά τη δημιουργία του αντικειμένου XmlTextReader, χρησιμοποιήστε τη μέθοδο Read για την ανάγνωση των δεδομένων XML. Η μέθοδος Read συνεχίζει να μετακινείται μέσα σε όλο το αρχείο XML διαδοχικά, μέχρι να φτάσει στο τέλος του αρχείου, όπου η μέθοδος Read επιστρέφει τιμή "False."
    while (reader.Read()) {    // Do some work here on the data.	Console.WriteLine(reader.Name);}Console.ReadLine();					
  7. Εξετάστε τους κόμβους. Για την επεξεργασία των δεδομένων XML, κάθε εγγραφή έχει έναν τύπο κόμβου, ο οποίος μπορεί να προσδιοριστεί από την ιδιότητα Τύπος κόμβου. Οι ιδιότητες Όνομα και Τιμή επιστρέφουν το όνομα κόμβου (τα ονόματα του στοιχείου και της ιδιότητας) και την τιμή κόμβου (το κείμενο του κόμβου) του τρέχοντος κόμβου (ή εγγραφής). Η απαρίθμηση 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>Η αυτοβιογραφία του Βενιαμίν Φραγκλίνου</title><author><first-name>Βενιαμίν</first-name><last-name>Φραγκλίνος</last-name></author><price>8,99</price></book><book><title>Ο Έμπιστος Άνθρωπος</title><author><first-name>Χέρμαν</first-name><last-name>Μέλβιλ</last-name></author><price>11,99</price></book><book><title>Γοργίας</title><author><name>Πλάτων</name></author><price>9,99</price></book></bookstore>				

Αντιμετώπιση προβλημάτων

Κατά τη δοκιμή του κώδικα, ενδέχεται να εμφανιστεί το ακόλουθο μήνυμα σφάλματος εξαίρεσης: Unhandled Exception: System.Xml.XmlException: Unexpected XML declaration. The XML declaration must be the first node in the document, and no white space characters are allowed to appear before it.

Πρόσθετες πληροφορίες: Σφάλμα συστήματος. Το σφάλμα εξαίρεσης παρουσιάζεται στην ακόλουθη γραμμή κώδικα: While
(reader.Read())
Το σφάλμα εξαίρεσης οφείλεται σε μη έγκυρη οδηγία επεξεργασίας. Για παράδειγμα, η οδηγία διεργασίας ενδέχεται να περιέχει άσχετα κενά. Το ακόλουθο είναι ένα παράδειγμα οδηγίας επεξεργασίας που δεν είναι έγκυρη:
<?xml version='1.0' ?>
Αυτή η ετικέτα xml έχει διάστημα πριν από την αγκύλη ‘<’. Καταργήστε το προηγούμενο κενό διάστημα, για να επιλύσετε το σφάλμα.

ΑΝΑΦΟΡΕΣ

Το ακόλουθο αρχείο είναι διαθέσιμο για λήψη από το Κέντρο λήψης αρχείων της Microsoft:
Για περισσότερες πληροφορίες σχετικά με τις κλάσεις XML και το C# του .NET Framework, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft Developer Network (MSDN) στο Web: Για περισσότερες πληροφορίες σχετικά με την κλάση XmlReader, επισκεφτείτε την ακόλουθη τοποθεσία του MSDN στο Web: Για περισσότερες πληροφορίες σχετικά με τον τρόπο χρήσης του XmlReader για την ανάγνωση δεδομένων XML, επισκεφθείτε τις ακόλουθες τοποθεσίες του MSDN στο Web:
Σημείωση Αυτό είναι ένα άρθρο «ΤΑΧΕΙΑΣ ΔΗΜΟΣΙΕΥΣΗΣ» που δημιουργήθηκε απευθείας από τον οργανισμό υποστήριξης της Microsoft. Οι πληροφορίες που περιλαμβάνονται σε αυτό το άρθρο, παρέχονται ως απόκριση σε θέματα που προκύπτουν. Ως αποτέλεσμα της ταχύτητας διάθεσής του, το υλικό ενδέχεται να έχει τυπογραφικά λάθη και να αναθεωρηθεί ανά πάσα στιγμή χωρίς ειδοποίηση. Ανατρέξτε στους Όρους χρήσης για άλλα ζητήματα.
Ιδιότητες

Αναγνωριστικό άρθρου: 307548 - Τελευταία αναθεώρηση: 05/31/2013 13:17:00 - Αναθεώρηση: 1.0

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

  • kbdownload kbhowtomaster KB307548
Σχόλια