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

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


Αυτό το άρθρο αναφέρεται από τον ακόλουθο χώρο ονομάτων βιβλιοθήκη κλάσης του Microsoft .NET Framework:
  • System.Xml

Σύνοψη

Αυτό το άρθρο περιγράφει τον τρόπο χρήσης της κλάσης XmlTextReader ανάγνωση Extensible Markup Language (XML) από ένα αρχείο. XmlTextReader παρέχει άμεση ανάλυση και tokenizing XML και υλοποιεί το XML 1.0 προδιαγραφές, καθώς και των χώρων ονομάτων στην προδιαγραφή XML από το World Wide Web Consortium (W3C). Αυτό το άρθρο παρέχει γρήγορη, κωδικοποιημένη ροή πρόσβαση σε XML, αντί να χρησιμοποιεί ένα μοντέλο αντικειμένου, όπως το μοντέλο αντικειμένου εγγράφου XML (DOM).

Απαιτήσεις

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

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

Το παράδειγμα αυτό χρησιμοποιεί ένα αρχείο που ονομάζεται Books.xml. Μπορείτε να δημιουργήσετε το δικό σας αρχείο Books.xml ή χρησιμοποιήστε το δείγμα αρχείου που περιλαμβάνεται με τις γρήγορες εκκινήσεις του Κιτ ανάπτυξης λογισμικού (SDK) .NET στον ακόλουθο φάκελο:
.NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs visual Studio \Program Files\Microsoft


Πρέπει να αντιγράψετε Books.xml στο φάκελο \Bin\Debug που βρίσκεται κάτω από το φάκελο στον οποίο μπορείτε να δημιουργήσετε αυτό το έργο. Books.XML είναι επίσης διαθέσιμο για λήψη. Ανατρέξτε στην ενότητα "αναφορές" για τη θέση λήψης.

  1. Ξεκινήστε το Visual Studio 2005 ή το Visual Studio .NET.
  2. Δημιουργία νέας Visual C# κονσόλα εφαρμογής. Μπορείτε να μεταβείτε απευθείας στην ενότητα "καταχώρηση πλήρη κωδικό" ή συνεχίστε με τα παρακάτω βήματα για να δημιουργήσετε την εφαρμογή.
  3. Βεβαιωθείτε ότι το έργο περιέχει μια αναφορά στη συγκρότηση System.Xml.dll .
  4. Καθορίστε την οδηγία χρησιμοποιώντας σχετικά με το χώρο ονομάτων System.Xml έτσι ώστε δεν είναι απαραίτητο να εγκρίνετε δηλώσεις XmlTextReader αργότερα στον κώδικά σας. Πρέπει να χρησιμοποιήσετε την οδηγία χρησιμοποιώντας πριν από άλλες δηλώσεις.
    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. (Σημειώστε ότι αυτό το βήμα παρουσιάζει ένα εξωτερικό "βρόχο ενώ" και τα επόμενα δύο βήματα παρουσιάζουν τον τρόπο χρήσης αυτού του βρόχου για να διαβάσετε το αρχείο 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' ?>

Αυτό το tag xml έχει ένα προηγούμενο χώρο της ' <' αγκύλη. Καταργήστε το προηγούμενο κενό διάστημα για να επιλύσετε το σφάλμα.

ΑΝΑΦΟΡΈΣ

Το ακόλουθο αρχείο είναι διαθέσιμο για λήψη από το Κέντρο λήψης της Microsoft:
Για περισσότερες πληροφορίες σχετικά με το .NET Framework XML κλάσεις και C#, επισκεφθείτε την ακόλουθη τοποθεσία του Microsoft Developer Network (MSDN) στο Web:
Για περισσότερες πληροφορίες σχετικά με την κλάση XmlReader , επισκεφθείτε την ακόλουθη τοποθεσία MSDN στο Web:
Για περισσότερες πληροφορίες σχετικά με τη χρήση XmlReader την ανάγνωση δεδομένων XML, επισκεφθείτε τις ακόλουθες τοποθεσίες του MSDN στο Web:
Ιδιότητες

Αναγνωριστικό άρθρου: 307548 - Τελευταία αναθεώρηση: 21 Ιαν 2017 - Αναθεώρηση: 2

Σχόλια