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

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 307548 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Αυτό το άρθρο περιγράφει τον τρόπο χρήσης της κλάσης 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:
Σύμπτυξη αυτής της εικόναςΑνάπτυξη αυτής της εικόνας
Λήψη
Άμεση λήψη του πακέτου Books.exe.
Για περισσότερες πληροφορίες σχετικά με τις κλάσεις XML και το C# του .NET Framework, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft Developer Network (MSDN) στο Web:
http://msdn.microsoft.com/el-gr/magazine/cc302158.aspx
Για περισσότερες πληροφορίες σχετικά με την κλάση XmlReader, επισκεφτείτε την ακόλουθη τοποθεσία του MSDN στο Web:
http://msdn.microsoft.com/el-gr/library/system.xml.xmlreader(vs.71).aspx
Για περισσότερες πληροφορίες σχετικά με τον τρόπο χρήσης του XmlReader για την ανάγνωση δεδομένων XML, επισκεφθείτε τις ακόλουθες τοποθεσίες του MSDN στο Web:
http://msdn.microsoft.com/el-gr/library/aa720470(VS.71).aspx

http://msdn.microsoft.com/el-gr/library/tfz3cz6w(vs.71).aspx
Σημείωση Αυτό είναι ένα άρθρο «ΤΑΧΕΙΑΣ ΔΗΜΟΣΙΕΥΣΗΣ» που δημιουργήθηκε απευθείας από τον οργανισμό υποστήριξης της Microsoft. Οι πληροφορίες που περιλαμβάνονται σε αυτό το άρθρο, παρέχονται ως απόκριση σε θέματα που προκύπτουν. Ως αποτέλεσμα της ταχύτητας διάθεσής του, το υλικό ενδέχεται να έχει τυπογραφικά λάθη και να αναθεωρηθεί ανά πάσα στιγμή χωρίς ειδοποίηση. Ανατρέξτε στους Όρους χρήσης για άλλα ζητήματα.

Ιδιότητες

Αναγν. άρθρου: 307548 - Τελευταία αναθεώρηση: Παρασκευή, 31 Μαΐου 2013 - Αναθεώρηση: 1.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
Λέξεις-κλειδιά: 
kbdownload kbhowtomaster KB307548

Αποστολή σχολίων

 

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