Utiliser Visual C# pour lire des données XML à partir d’une URL
Article
Cet article explique comment utiliser la XmlTextReader classe pour lire du code XML à partir d’une URL. Les informations diffusées peuvent provenir de toutes sortes de sources, telles qu’un flux d’octets à partir d’un serveur, d’un fichier ou d’une TextReader classe.
Version du produit d’origine : Visual Studio Numéro de base de connaissances d’origine : 307643
Spécifications
Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :
Microsoft Visual Studio
Terminologie XML
Création et lecture de code XML
URL et création d’un point de terminaison XML
Cet article fait référence à l’espace de noms System.Xmlbibliothèque de classes .NET Framework.
Guide pratique pour lire des données XML à partir d’une URL
Cet exemple utilise un fichier nommé Books.xml. Vous pouvez créer votre propre fichier Books.xml ou utiliser l’exemple de fichier inclus dans les guides de démarrage rapide du Kit de développement logiciel (SDK) .NET. Ce fichier est également disponible en téléchargement ; reportez-vous au premier élément de la section Références de cet article pour l’emplacement de téléchargement.
Copiez le fichier Books.xml dans le \Inetpub\Wwwroot dossier de votre ordinateur.
Ouvrez Visual Studio.
Créez une application console Visual C#. Vous pouvez passer à la section Liste de code complète ou poursuivre ces étapes pour générer l’application.
Spécifiez la directive using sur l’espace System.Xml de noms afin que vous ne soyez pas obligé de qualifier les XmlTextReader déclarations de classe ultérieurement dans votre code. Vous devez utiliser la directive using avant toute autre déclaration.
C#
using System.Xml;
Récupérez le flux XML au moyen d’une URL. Les flux sont utilisés pour fournir l’indépendance de l’appareil ; par conséquent, les modifications du programme ne sont pas requises si la source d’un flux change. Déclarez une constante pour l’URL http://localhost/books.xml . Vous allez utiliser la constante à l’étape suivante avec XmlTextReader. Ajoutez l’exemple de code suivant à la procédure principale de la classe par défaut :
C#
String URLString = "http://localhost/books.xml";
Créez une instance de la XmlTextReader classe et spécifiez l’URL. En règle générale, XmlTextReader il est utilisé si vous avez besoin d’accéder au code XML en tant que données brutes sans surcharge d’un modèle DOM (Document Object Model) ; par conséquent, XmlTextReader fournit un mécanisme plus rapide pour lire le code XML. La XmlTextReader classe a différents constructeurs pour spécifier l’emplacement des données XML. Le code suivant crée une instance d’un XmlTextReader objet et transmet l’URL au constructeur :
C#
XmlTextReader reader = new XmlTextReader (URLString);
Lisez le code XML.
Notes
Cette étape montre une boucle de base, externe while et les deux étapes suivantes décrivent comment utiliser cette boucle et lire du code XML.
Une fois qu’il est chargé, XmlTextReader effectue des lectures séquentielles pour parcourir les données XML et utilise la Read méthode pour obtenir l’enregistrement suivant. La Read méthode retourne false s’il n’y a plus d’enregistrements.
C#
while (reader.Read())
{
// Do some work here on the data.
Console.WriteLine(reader.Name);
}
Console.ReadLine();
Inspectez les nœuds. Pour traiter les données XML, chaque enregistrement a un type de nœud qui peut être déterminé à partir de la NodeType propriété. Les Name propriétés retournent Value le nom du nœud (les noms d’éléments et d’attributs) et la valeur du nœud (texte du nœud) du nœud actif (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.
Notes
Cet exemple ignore les attributs d’élément.
C#
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;
}
}
Inspectez les attributs. Les types de nœuds d’élément peuvent inclure une liste de nœuds d’attribut qui sont associés. La MovetoNextAttribute méthode se déplace séquentiellement à travers chaque attribut de l’élément. Utilisez la HasAttributes propriété pour tester si le nœud a des attributs. La AttributeCount propriété retourne le nombre d’attributs pour le nœud actuel.
C#
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.Write(">");
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;
}
}
Créez et exécutez votre projet.
Listing du code complet
C#
using System;
using System.Xml;
namespaceReadXMLfromURL
{
///<summary>/// Summary description for Class1.///</summary>classClass1
{
staticvoidMain(string[] args)
{
String URLString = "http://localhost/books.xml";
XmlTextReader reader = new XmlTextReader (URLString);
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.Write(">");
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;
}
}
}
}
}
Exemple de sortie
XML
<bookstore><bookgenre="autobiography"publicationdate="1981"ISBN="1-861003-11-0"><title>
The Autobiography of Benjamin Franklin
</title><author><first-name>
Benjamin
</first-name><last-name>
Franklin
</last-name></author><price>
8.99
</price></book><bookgenre="novel"publicationdate="1967"ISBN="0-201-63361-2">>
<title>
The Confidence Man
</title><author><first-name>
Herman
</first-name><last-name>
Melville
</last-name></author><price>
11.99
</price></book><bookgenre="philosophy"publicationdate="1991"ISBN="1-861001-57-6"><title>
The Gorgias
</title><author><name>
Plato
</name></author><price>
9.99
</price></book></bookstore>
Dépannage
Lorsque vous testez le code, vous pouvez recevoir le message d’erreur d’exception suivant :
Une exception non gérée de type System.Xml.XmlException s’est produite dans system.xml.dll Informations supplémentaires : déclaration XML inattendue. La déclaration XML doit être le premier nœud du document et aucun espace blanc n’est autorisé à apparaître avant celui-ci. Ligne 1, position 4.
L’erreur d’exception se produit sur la ligne de code suivante.
C#
while (reader.Read())
Pour résoudre l’erreur d’exception, supprimez le caractère d’espace blanc qui précède le premier nœud du document Books.xml .
Utilisez un service web REST à l’aide de HttpClient pour effectuer des opérations CRUD de base. Vous détecterez quand votre appareil est connecté à Internet pour fournir une bonne expérience utilisateur et tirer parti des piles de mise en réseau natives afin d’obtenir des performances optimales.
Vous pouvez créer une arborescence XML en C# en utilisant les constructeurs LINQ to XML XElement et XAttribute, et vous pouvez faire en sorte que le code ressemble à la structure du code XML sous-jacent.
Vous pouvez analyser une chaîne avec XElement.Parse pour créer une arborescence XML en C# et Visual Basic, et vous pouvez créer une arborescence XML avec des littéraux XML en Visual Basic.
Cet article explique comment sérialiser un objet en XML à l’aide de Visual C#. Cet article fournit également quelques exemples d’étapes pour expliquer les informations connexes.