Comment faire pour lire les données XML à partir d'un fichier à l'aide de Visual C#

Traductions disponibles Traductions disponibles
Numéro d'article: 307548 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article décrit comment utiliser la classe XmlTextReader pour lire le langage de balisage Extensible (XML) à partir d'un fichier. XmlTextReader fournit un analyse et une création de jetons directes de XML et implémente la spécification XML 1.0, ainsi que les espaces de noms, dans la spécification XML du World Wide Web Consortium (W3C). Cet article fournit un accès en flux rapide et « tokenisé » à XML, plutôt que d'utiliser un modèle d'objet tel que l'objet modèle DOM (Document XML).

Configuration requise

La liste suivante met en évidence le matériel recommandé, les logiciels, l'infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft Visual Studio 2005 ou Microsoft Visual Studio .NET
Cet article suppose que vous maîtrisez les sujets suivants :
  • Terminologie XML
  • Création et lecture d'un fichier XML

Comment faire pour lire les données XML à partir d'un fichier

Cet exemple utilise un fichier nommé Books.xml. Vous pouvez créer votre propre fichier Books.xml ou utiliser l'exemple de fichier qui est inclus avec les Démarrages rapides du Kit de développement logiciel (SDK) .NET dans le dossier suivant :
\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Samples\QuickStart\Howto\Samples\Xml\Transformxml\Cs
Vous devez copier Books.xml dans le dossier \Bin\Debug, qui se trouve sous le dossier dans lequel vous créez ce projet. Books.XML est également disponible pour téléchargement. Reportez-vous à la "Référencessection « l'emplacement de téléchargement.
  1. Démarrez Visual Studio 2005 ou Visual Studio .NET.
  2. Créez une nouvelle Application de Console Visual C#. Vous passez directement à la "Listing complet du code"section ou suivre les étapes ci-dessous pour construire l'application.
  3. Assurez-vous que le projet contienne une référence à l'assembly System.Xml.dll .
  4. Spécifiez la directive Using sur l'espace de noms System.Xml afin que vous ne soyez pas obligé de qualifier des déclarations XmlTextReader ultérieurement dans votre code. Vous devez utiliser la directive using avant toute autre déclaration.
    using System.Xml;
    					
  5. Créez une instance d'un objet XmlTextReader et ajoutez-y le fichier XML. En général, la classe XmlTextReader est utilisée si vous avez besoin accéder aux données XML en tant que données brutes sans la charge d'un modèle DOM ; Par conséquent, la classe XmlTextReader fournit un mécanisme de lecture XML plus rapide. La classe XmlTextReader possède différents constructeurs pour spécifier l'emplacement des données XML. Le code suivant crée une instance de la classe XmlTextReader et charge le fichier Books.xml. Ajoutez le code suivant à la procédure principale de Class1.
    XmlTextReader reader = new XmlTextReader ("books.xml");
    					
  6. Parcourez les données XML. (Notez que cette étape présente une boucle extérieure « while » et que les deux étapes suivantes montrent comment utiliser cette boucle pour lire le code XML). Après avoir créé l'objet XmlTextReader , utilisez la méthode Read pour lire les données XML. La méthode Read continue de parcourir le fichier XML dans l'ordre jusqu'à ce qu'elle atteigne la fin du fichier, point auquel la méthode Read renvoie la valeur « False ».
    while (reader.Read()) 
    {
        // Do some work here on the data.
    	Console.WriteLine(reader.Name);
    }
    Console.ReadLine();
    					
  7. Inspectez les n?uds. Pour traiter les données XML, chaque enregistrement possède un type de n?ud qui peut être déterminé à partir de la propriété NodeType . Les propriétés Name et Value renvoient le nom du n?ud (les noms d'élément et d'attribut) et la valeur (le texte du n?ud) du n?ud en cours (ou enregistrement). L'énumération NodeType détermine le type de n?ud. L'exemple de code suivant affiche le nom des éléments et le type de document. Notez que cet exemple ignore les attributs de l'élément.
    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. Inspectez les attributs. Les types de n?uds d'élément peuvent inclure une liste de n?uds d'attribut qui leur sont associés. La méthode MovetoNextAttribute passe séquentiellement par chaque attribut dans l'élément. Utilisez la propriété HasAttributes pour vérifier si le n?ud possède des attributs. La propriété AttributeCount renvoie le nombre d'attributs du n?ud actuel.
    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. Enregistrez et fermez votre projet.

Listing complet du code

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

Exemple de sortie

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

Résolution des problèmes

Lorsque vous testez le code, vous pouvez recevoir le message d'erreur exception suivant : Exception non gérée : System.Xml.XmlException : déclaration XML inattendue. La déclaration XML doit être le premier n?ud dans le document, et aucun caractère d'espace blanc n'est autorisés à comparaître devant lui.

Informations supplémentaires : erreur système. L'erreur d'exception se produit sur la ligne de code suivante : alors que
(reader.Read())
L'erreur d'exception est provoquée par une instruction de traitement non valide. Par exemple, l'instruction de traitement peut contenir des espaces superflus. Voici un exemple d'une instruction de traitement non valide :
<?xml version='1.0' ?>
Cette balise xml comporte un espace avant le '<? bracket.="" remove="" the="" preceding="" whitespace="" to="" resolve="" the=""></?>

RÉFÉRENCES

Le fichier suivant est disponible en téléchargement à partir du centre de téléchargement Microsoft :
Réduire cette imageAgrandir cette image
Télécharger
Télécharger le package Books.exe maintenant.
Pour plus d'informations sur les classes XML du.NET Framework et C#, visitez le site Web de Microsoft Developer Network (MSDN) à l'adresse suivante :
http://msdn.Microsoft.com/en-us/Magazine/cc302158.aspx
Pour plus d'informations sur la classe XmlReader , reportez-vous au site Web MSDN suivant :
http://msdn2.Microsoft.com/en-us/library/System.Xml.XmlReader (vs.71).aspx
Pour plus d'informations sur la façon d'utiliser XmlReader pour lire des données XML, visitez les sites Web MSDN suivants :
http://msdn2.Microsoft.com/en-us/library/aa720470 (VS.71).aspx

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

Propriétés

Numéro d'article: 307548 - Dernière mise à jour: samedi 8 février 2014 - Version: 4.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Initiation
Mots-clés : 
kbdownload kbhowtomaster kbmt KB307548 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d?une traduction incorrecte du contenu ou de son utilisation par les clients.
La version anglaise de cet article est la suivante: 307548
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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