Comment ouvrir un document XML - fonctionnalités de travail avec des fichiers XML. Travailler avec XML dans les applications .NET Qu'est-ce que XML

Maison / Windows 7

Vous avez probablement entendu parler de XML et connaissez de nombreuses raisons pour lesquelles il devrait être utilisé dans votre organisation. Mais qu’est-ce que XML exactement ? Cet article explique ce qu'est XML et comment il fonctionne.

Dans cet article

Balisages, balisages et balises

Pour comprendre XML, il est utile de se rappeler comment baliser les données. Les documents ont été créés par des personnes au cours de plusieurs siècles et, tout au long de cette période, les gens ont pris des notes à leur sujet. Par exemple, les enseignants prennent souvent des notes sur le travail des élèves indiquant la nécessité de déplacer des paragraphes, de rendre une phrase plus claire ou de la corriger. fautes d'orthographe etc. En marquant un document, vous pouvez déterminer la structure, la signification et apparence information. Si vous avez déjà utilisé des correctifs dans Microsoft Office Word, alors vous connaissez le formulaire de balisage informatisé.

dans le monde informatique le terme « marquage » est devenu le terme « marquage ». Le balisage utilise des codes appelés balises (ou parfois jetons) pour définir la structure, l'apparence visuelle et, dans le cas du XML, la signification des données.

Le texte de cet article dans Format HTML est bon exemple application du balisage informatique. Si chez Microsoft Internet Explorer cliquez sur cette page clic droit souris et sélection de la commande Afficher le code HTML, vous verrez du texte lisible et des balises HTML comme

ET

. Dans les documents HTML et XML, les balises sont faciles à reconnaître car elles sont placées entre crochets. Dans le texte source de cet article, les balises HTML remplissent de nombreuses fonctions, telles que définir le début et la fin de chaque paragraphe (

...

) et l'emplacement des dessins.

Fonctionnalités XML

Les documents HTML et XML contiennent des données entourées de balises, mais c'est là que s'arrêtent les similitudes entre les deux langages. Au format Balises HTML déterminer la conception des données - l'emplacement des titres, le début d'un paragraphe, etc. Au format XML, les balises déterminent la structure et la signification des données - ce qu'elles sont.

En décrivant la structure et la signification des données, il devient possible de les réutiliser de plusieurs manières. Par exemple, si vous disposez d'un bloc de données de ventes dans lequel chaque élément est clairement défini, vous pouvez charger uniquement les éléments nécessaires dans le rapport de ventes et transférer les autres données vers la base de données comptable. En d'autres termes, vous pouvez utiliser un système pour générer et baliser des données au format XML, puis traiter ces données dans n'importe quel autre système, quelle que soit la plate-forme client ou le système. système opérateur. Cette compatibilité fait de XML la base de l'une des technologies d'échange de données les plus populaires.

Veuillez noter les points suivants lorsque vous travaillez :

    HTML ne peut pas être utilisé à la place de XML. Cependant, les données XML peuvent être placées dans des balises HTML et affichées sur des pages Web.

    Les fonctionnalités HTML sont limitées à un ensemble prédéfini de balises communes à tous les utilisateurs.

    Les règles XML vous permettent de créer toutes les balises nécessaires pour décrire les données et leur structure. Disons que vous devez stocker et partager des informations sur les animaux de compagnie. Pour ce faire, vous pouvez créer le code XML suivant :

    Izzy Siamois 6 Oui Non Izz138bod Colin Wilcox

Comme vous pouvez le constater, les balises XML indiquent clairement les données que vous consultez. Par exemple, il est clair que les données concernent un chat et vous pouvez facilement déterminer son nom, son âge, etc. Comme vous pouvez créer des balises qui définissent presque n'importe quelle structure de données, XML est extensible.

Mais ne confondez pas les balises de cet exemple avec les balises du fichier HTML. Par exemple, si le texte XML ci-dessus est collé dans un fichier HTML et ouvert dans un navigateur, les résultats ressembleront à ceci :

Izzy Siamese 6 oui non Izz138bod Colin Wilcox

Le navigateur Web ignorera les balises XML et affichera uniquement les données.

Des données bien formées

Vous avez probablement entendu quelqu'un en informatique parler d'un fichier XML « bien formé ». Un fichier XML bien formé doit suivre des règles très strictes. S'il ne respecte pas ces règles, le XML ne fonctionne pas. Par exemple, dans l'exemple précédent, chaque balise d'ouverture a une balise de fermeture correspondante, donc cet exemple suit l'une des règles d'un fichier XML bien formé. Si vous supprimez une balise d'un fichier et essayez de l'ouvrir dans l'un des programmes Office, un message d'erreur apparaîtra et il sera impossible d'utiliser un tel fichier.

Vous n'avez pas besoin de connaître les règles pour créer un fichier XML bien formé (même si elles ne sont pas difficiles à comprendre), mais rappelez-vous que seules des données XML bien formées peuvent être utilisées dans d'autres applications et systèmes. Si le fichier XML ne s'ouvre pas, il est probablement mal formé.

XML est indépendant de la plate-forme, ce qui signifie que tout programme conçu pour utiliser XML peut lire et traiter des données XML, quel que soit le matériel ou le système d'exploitation. Par exemple, si vous appliquez les bonnes balises XML, vous pouvez utiliser un programme de bureau pour ouvrir et traiter les données reçues du mainframe. Et quelle que soit la personne qui a créé les données XML, celles-ci peuvent être manipulées dans diverses applications Office. En raison de sa compatibilité, XML est devenu l'une des technologies les plus populaires pour l'échange de données entre les bases de données et les ordinateurs des utilisateurs.

En plus des données balisées bien formées, les systèmes XML utilisent généralement deux composants supplémentaires : les schémas et les transformations. Les sections suivantes décrivent leur fonctionnement.

Schémas

Ne vous laissez pas intimider par le terme « stratagème ». Un schéma est simplement un fichier XML qui contient des règles pour le contenu du fichier de données XML. Les fichiers de schéma portent généralement l'extension XSD, tandis que les fichiers de données XML utilisent l'extension XML.

Les schémas permettent aux programmes de valider les données. Ils forment la structure des données et assurent leur compréhensibilité pour le créateur et les autres personnes. Par exemple, si l'utilisateur saisit des données non valides, telles que du texte dans un champ de date, le programme peut l'inviter à les corriger. Si les données d'un fichier XML correspondent aux règles du schéma, vous pouvez utiliser n'importe quel programme compatible XML pour les lire, les interpréter et les traiter. Par exemple, comme le montre l'image ci-dessous, Excel peut valider les données pour le respect du système CAT.

Les circuits peuvent être complexes et cet article ne peut pas expliquer comment les créer. (En outre, votre organisation compte probablement des informaticiens qui savent comment procéder.) Cependant, il est utile de savoir à quoi ressemblent les diagrammes. Le diagramme suivant définit les règles pour un ensemble de balises ... :

Ne vous inquiétez pas si l'exemple n'est pas clair. Faites simplement attention aux points suivants :

    Les éléments de chaîne dans l'exemple de schéma sont appelés déclarations. Si des informations complémentaires sur l'animal étaient nécessaires, telles que sa couleur ou ses caractéristiques particulières, le service informatique ajouterait les déclarations appropriées au schéma. Le système XML peut être modifié en fonction de l'évolution des besoins de l'entreprise.

    Les déclarations sont un moyen puissant de manipuler la structure des données. Par exemple, une annonce signifie que des balises telles que Et , doivent suivre dans l’ordre ci-dessus. Les annonces peuvent également valider les types d'entrées des utilisateurs. Par exemple, le circuit ci-dessus nécessite une entrée entière positive pour l'âge du chat et des valeurs booléennes (VRAI ou FAUX) pour les balises ALTERED et DECLAWED.

    Si les données d'un fichier XML suivent les règles du schéma, alors les données sont dites valides. Le processus de vérification de la conformité d'un fichier de données XML aux règles de schéma est appelé (assez logiquement) validation. Le grand avantage de l’utilisation de schémas est qu’ils peuvent empêcher la corruption des données. Les schémas facilitent également la recherche de données corrompues, car le traitement des fichiers XML s'arrête lorsqu'un problème survient.

Transformations

Comme indiqué ci-dessus, XML permet également une utilisation et une réutilisation efficaces des données. Le mécanisme de réutilisation des données est appelé transformation XSLT (ou simplement transformation).

Vous (ou votre service informatique) pouvez également utiliser des transformations pour échanger des données entre des systèmes back-end, tels que des bases de données. Supposons que la base de données A stocke les données de ventes dans une table utile au service commercial. La base de données B stocke les données sur les revenus et les dépenses dans un tableau spécialement conçu pour la comptabilité. La base de données B peut utiliser une transformation pour extraire les données de la base de données A et les placer dans les tables appropriées.

La combinaison du fichier de données, du schéma et de la transformation constitue le système XML de base. La figure suivante montre le fonctionnement de tels systèmes. Le fichier de données est vérifié par rapport aux règles du schéma, puis transmis de toute manière appropriée pour transformation. Dans ce cas, la transformation place les données dans un tableau sur une page Web.

L'exemple suivant montre une transformation qui charge des données dans un tableau sur une page Web. Le but de l’exemple n’est pas d’expliquer comment créer des transformations, mais de montrer une des formes qu’elles peuvent prendre.

Nom Race Âge Modifié Dégriffé Licence Propriétaire

Cet exemple montre à quoi pourrait ressembler le texte d'un type de transformation, mais n'oubliez pas que vous pouvez être limité à une description claire de ce dont vous avez besoin à partir des données, et que cette description peut être effectuée dans votre langue maternelle. Par exemple, vous pourriez vous adresser au service informatique et lui dire qu'il doit imprimer les données de ventes pour des régions spécifiques au cours des deux dernières années et que les informations doivent ressembler à ceci et à cela. Le service peut alors rédiger (ou modifier) ​​une transformation pour répondre à votre demande.

Microsoft et un nombre croissant d'autres sociétés créent des transformations à des fins diverses, rendant XML encore plus pratique à utiliser. À l’avenir, il sera probablement possible de télécharger une conversion adaptée à vos besoins avec peu ou pas de personnalisation supplémentaire. Cela signifie qu’avec le temps, l’utilisation de XML deviendra de moins en moins coûteuse.

XML dans le système Microsoft Office

Les éditions professionnelles d'Office offrent une prise en charge XML améliorée. Depuis Microsoft Office System 2007, Microsoft Office utilise des formats de fichiers XML tels que DOCX, XLSX et PPTX. Étant donné que XML stocke les données dans un format texte plutôt que dans un format binaire propriétaire, les clients peuvent définir leurs propres schémas et utiliser vos données de différentes manières sans avoir à payer de redevances. Pour plus d’informations sur les nouveaux formats, consultez Formats Open XML et extensions de nom de fichier. Vous trouverez ci-dessous d’autres avantages.

Tout cela est génial, mais que se passe-t-il si vous disposez de données XML sans schéma ? Cela dépend de quoi Programme de bureau vous utilisez. Par exemple, lorsque vous ouvrez un fichier XML sans schéma dans Excel, cela suppose que le schéma existe et vous permet de charger les données dans un tableau XML. Vous pouvez utiliser des listes et des tableaux XML pour trier, filtrer et calculer des données.

Activer les fonctionnalités XML dans Office

Par défaut, l'onglet Développeur n'est pas visible. Il doit être ajouté au ruban pour utiliser les commandes XML dans Office.

L'article précédent décrivait les concepts généraux concernant XML. Dans cet article, nous apprendrons comment effectuer des actions de base liées à la modification, à l'ajout et à la recherche dans un fichier XML.

Fichier XML utilisé pour l'exemple.

Mazda 2007 BMW 2009

xml dom

DANS à l'heure actuelle, notre fichier contient la structure suivante :

Relation entre les nœuds dans XML-DOM, points principaux :

1. Tout nœud de l'arborescence DOM a un ParentNode parent. Dans notre exemple, garage est le parent des deux éléments car, et les deux éléments car sont, à leur tour, parents des éléments modèle et année.

Comment obtenir le parent de l’élément XML de la voiture ?

Console.WriteLine(elmRoot["voiture"].ParentNode.Name); //Résultat : garage

2. Un parent peut avoir des enfants ChildNodes. Par exemple, pour le nœud garage, les enfants sont tous deux des éléments de voiture. Les éléments de la voiture ont également le modèle et l'année des enfants.

Nœuds enfants, est une collection qui stocke tous les éléments XML enfants ; pour accéder à l'élément souhaité, vous devez spécifier son index. (L'index part toujours de zéro !)

Par exemple : comment obtenir le premier élément enfant ?

ElmRoot.ChildNodes ;

3. Comme dans la vie ordinaire, un enfant peut naître en premier, en premier, ou en dernier, en dernier.

Si nous prenons l'élément automobile comme exemple, alors

FirstChild est le modèle LastChild est l'année

4. À leur tour, il existe également des liens entre les éléments enfants : ils peuvent être frères ou sœurs, si l'on fait des parallèles avec la vie réelle.

Un enfant peut avoir, par exemple, un frère ou une sœur précédent et un frère ou une sœur suivante.

Console.WriteLine(elmRoot.ChildNodes.FirstChild.NextSibling.Name); //Résultat : année Console.WriteLine(elmRoot.ChildNodes.LastChild.PreviousSibling.Name); //Résultat : modèle

Si l'élément n'est pas trouvé, une exception est levée : NullReferenceException, donc lorsque vous travaillez avec XML, utilisez toujours des blocs try catch.

Console.WriteLine(elmRoot.ChildNodes. LastChild.NextSibling.Name); Console.WriteLine(elmRoot.ChildNodes.FirstChild.PreviousSibling.Name);

LastChild est NextSibling ;
FirstChild est PrécédentSibling ;

En utilisant les méthodes décrites ci-dessus, vous pouvez facilement accéder au nœud souhaité et obtenir la valeur dont vous avez besoin.

Comment obtenir la valeur d’un élément XML ?

La valeur XML d'un élément peut être obtenue à l'aide de la propriété InnerText, par exemple :

Console.WriteLine(elmRoot["car"].FirstChild.InnerText); //Résultat : Mazda

Une autre façon d'obtenir la même valeur d'élément XML :

Console.WriteLine(elmRoot.FirstChild.FirstChild.InnerText); //Résultat : Mazda

La séquence de mouvements le long de l'arborescence DOM :

Garage -> voiture -> modèle -> Mazda

On obtient l'année :

ElmRoot["voiture"].LastChild.InnerText; //Résultat : 2007

Sous-séquence :

Garage -> voiture -> année -> 2007

Autre exemple : 3 façons d'obtenir le même résultat.

Console.WriteLine(elmRoot.LastChild.FirstChild.InnerText); Console.WriteLine(elmRoot["car"].NextSibling.FirstChild.InnerText); Console.WriteLine(elmRoot.ChildNodes.Item(1).FirstChild.InnerText); //Résultat : BMW

Si vous avez besoin d'obtenir l'année pour un élément avec la valeur Mazda :

Console.WriteLine(elmRoot.FirstChild.LastChild.InnerText); //Résultat : 2007

Pour BMW (deux façons, obtenez le même résultat)

Console.WriteLine(elmRoot.ChildNodes.Item(1).ChildNodes.Item(1).InnerText); Console.WriteLine(elmRoot.ChildNodes.ChildNodes.InnerText); //Résultat : 2009

Comment modifier les valeurs des éléments XML ?

Utiliser la propriété TexteInner() Vous pouvez à la fois obtenir et modifier la valeur d'un élément XML, par exemple modifier l'année.

//Définissez une nouvelle valeur elmRoot.FirstChild.LastChild.InnerText = "2010"; //Affiche la nouvelle valeur sur l'écran de la console Console.WriteLine(elmRoot.FirstChild.ChildNodes.Item(1).InnerText); //Résultat : 2010

Dans le même temps, vous devez vous rappeler que toutes les modifications se produisent avec le fichier XML virtuel ; si vous ouvrez le fichier physique, vous verrez que l'année 2007 y est toujours indiquée.

Pour que les modifications prennent effet, vous devez utiliser la méthode Save, par exemple :

ElmRoot.Save("nom du fichier XML ou flux");

Les informations seront désormais modifiées dans le fichier XML « physique ».

Comment obtenir le nombre d’éléments enfants ?

Console.WriteLine(elmRoot.FirstChild.ChildNodes.Count);

garage -> voiture contient 2 enfants : modèle et année

Console.WriteLine(elmRoot.FirstChild.FirstChild.ChildNodes.Count);

garage -> voiture -> modèle contient 1 élément XML enfant.

Accéder aux éléments enfants

par index

ElmRoot.ChildNodes.Name; elmRoot.ChildNodes.Name; //Résultat : voiture

Utiliser une boucle

Foreach (nod XmlNode dans elmRoot.ChildNodes) ( Console.WriteLine(nod.Name); ) //Résultat : voiture, voiture

Comment obtenir le nom de l’élément XML ?

elmRoot.Name; //Résultat : garage

Création d'un nouvel élément XML

Créons un nouvel élément dans notre document XML pour qu'il diffère des deux autres (voiture), appelons-le bus.

Lors de la création d'un nouvel élément, nous utiliserons la recommandation du site Web msdn et au lieu du nouveau XmlElement standard, nous utiliserons la méthode CreateElement.

XmlElement elm = xmlDoc.CreateElement("bus");

Création et ajout d'un nouvel élément XML

Créons un nouvel élément XML nommé "BUS".

XmlElement elmRoot = xmlDoc.DocumentElement; Console.WriteLine(elmRoot.ChildNodes.Count); //voiture, voiture XmlElement elmNew = xmlDoc.CreateElement("bus"); elmRoot.AppendChild(elmNew); Console.WriteLine(elmRoot.ChildNodes.Count); //3 voiture, voiture, bus xmlDoc.Save("nom du fichier XML");

Explication:

1. Nous obtenons d’abord un élément racine auquel nous attacherons de nouveaux éléments.

2. A titre de vérification, nous afficherons le nombre actuel d'éléments enfants de l'élément garage : 2 (voiture et voiture)

3. Créez un nouvel élément BUS

4. Utiliser la méthode AjouterEnfant ajouter un nouvel élément à l'arborescence

5. Utilisons à nouveau le chèque et affichons le nombre actuel d'éléments pour l'élément de garage, il y en a maintenant 3 : voiture, voiture, bus.

6. Pour que les modifications affectent le fichier physique, enregistrez

Dans le fichier XML lui-même, le nouvel élément ressemblera à ceci :

Comment ajouter un nouvel élément XML ?

Tâche : créer un nouvel élément XML et y ajouter du contenu textuel, par exemple l'année de fabrication.

String strFilename = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmNew = xmlDoc.CreateElement("bus"); XmlText new_txt = xmlDoc.CreateTextNode("2006"); elmRoot.AppendChild(elmNew); elmRoot.LastChild.AppendChild(new_txt); Console.WriteLine(elmRoot.ChildNodes.Name); //bus Console.WriteLine(elmRoot.ChildNodes.LastChild.InnerText); //2006 Console.Read();

Dans le fichier XML :

2006

Pour plus de clarté

Créons maintenant un nœud « bus » avec la même architecture que la voiture, c'est-à-dire ajoutons des nœuds : le modèle, l'année et du contenu textuel.

Création d'un élément XML avec des enfants

string strFilename = @"C:\lessons\Auto.xml"; //crée-en un nouveau document XML en mémoire XmlDocument xmlDoc = new XmlDocument(); //charge le fichier XML en mémoire xmlDoc.Load(strFilename); //Récupère l'élément racine XmlElement elmRoot = xmlDoc.DocumentElement; //Créer 3 éléments : bus, modèle, année XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("modèle"); XmlElement elmYear = xmlDoc.CreateElement("année"); //Définir les valeurs des éléments : modèle, année XmlText year_txt = xmlDoc.CreateTextNode("2006"); //XmlText mod_txt = xmlDoc.CreateTextNode("liaz"); add else //Ajoute deux éléments enfants à l'élément bus : modèle et année elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); //Ajouter des valeurs aux nœuds modèle et année elmModel.InnerText = "liaz"; elmYear.AppendChild(année_txt); //Ajouter un nouveau bus d'éléments XML à l'arborescence elmRoot.AppendChild(elmBUS); //Vérifie si tout est ajouté comme il se doit Console.WriteLine(elmRoot.ChildNodes.FirstChild.InnerText); Console.WriteLine(elmRoot.LastChild.LastChild.InnerText); //Si tout est en ordre, alors utilisez la méthode Save xmlDoc.Save("xml file name");

Résultat:

liaz 2006

Comment puis-je raccourcir ce code ? Par exemple, comme suit :

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmRoot = xmlDoc.DocumentElement; XmlElement elmBUS = xmlDoc.CreateElement("bus"); XmlElement elmModel = xmlDoc.CreateElement("modèle"); XmlElement elmYear = xmlDoc.CreateElement("année"); //Ajouter des valeurs aux nœuds modèle et année elmModel.InnerText = "liaz"; elmYear.InnerText = "2006"; elmBUS.AppendChild(elmModel); elmBUS.AppendChild(elmYear); elmRoot.AppendChild(elmBUS); //Si tout est correct, alors appelez la méthode Save xmlDoc.Save("xml file name");

Raccourcissons un peu plus le code, pour ce faire nous utiliserons la propriété InnerXml :

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlElement elmXML = xmlDoc.CreateElement("bus"); chaîne txt = " liaz" + "2006"; //InnerXml! elmXML.InnerXml = txt; //xmlDoc.DocumentElement (sera égal à garage) - c'est une autre façon d'accéder à l'élément racine, la même que XmlElement elmRoot = xmlDoc.DocumentElement; xmlDoc.DocumentElement.AppendChild ( elmXML); xmlDoc.Save(PathXmlFile);

Résultat

Obtenez une liste d'éléments en utilisant GetElementByTagName

GetElementByTagName renvoie Liste de nœuds XML, qui contient tous les éléments descendants appartenant à l'élément spécifié, par exemple, nous devons récupérer tous les modèles de voitures stockés dans le garage :

XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(strFilename); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); foreach (nœud XmlNode dans modelName) ( Console.WriteLine(node.InnerText); ) //Résultat : mazda, bmw, liaz

Accès via l'index :

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(modelName.InnerText); //Résultat : liaz

Comment puis-je modifier le contenu textuel d'un élément « bus » nouvellement créé à l'aide de la méthode GetElementByTagName ?

String PathXmlFile = @"C:\lessons\Auto.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(PathXmlFile); XmlNodeList modelName = xmlDoc.GetElementsByTagName("model"); Console.WriteLine(modelName.InnerText); //Reçu la valeur : liaz

Ou vous pouvez changer le nom Liaz en Ikarus.

Console.WriteLine(modelName.InnerText = "Ikarus");

Langage de balisage extensible (XML). C'est vraiment simple fichiers texte, qui utilisent des balises personnalisées pour décrire la structure et d'autres fonctions d'un document.

Qu'est-ce que XML

XML est un langage de balisage créé par le World Wide Web Consortium (W3C) pour définir une syntaxe de codage de documents pouvant être lus par les humains et les machines. Pour ce faire, il utilise des balises qui définissent la structure du document ainsi que la manière dont le document doit être stocké et transporté.

Le moyen le plus simple de le comparer à un autre langage de balisage que vous connaissez peut-être est balisage hypertexte(HTML) utilisé pour encoder les pages Web. HTML utilise un ensemble prédéfini de caractères de balisage (codes courts) qui décrivent le format du contenu d'une page Web.

Cependant, la différence avec XML est qu'il est extensible. XML n'a pas de langage de balisage prédéfini comme HTML. Au lieu de cela, XML permet aux utilisateurs de créer leurs propres caractères de balisage pour décrire le contenu, créant ainsi un ensemble de caractères illimité et auto-défini.

Essentiellement, HTML est un langage axé sur la présentation du contenu, tandis que XML est un langage de description de données dédié utilisé pour stocker des données.

XML est souvent utilisé comme base pour d'autres formats de documents, il en existe des centaines. En voici quelques-uns que vous voudrez peut-être savoir :

  • RSS et ATOM décrivent comment les applications doivent gérer les flux Web.
  • Microsoft .NET utilise XML pour ses fichiers de configuration.
  • Microsoft Office utilise XML comme base pour la structure des documents.

Ainsi, si vous disposez d’un fichier XML, il ne vous indique pas nécessairement à quelle application il est destiné. Cependant, vous n'avez pas à vous en préoccuper, sauf si vous développez des fichiers XML.

Comment ouvrir un fichier XML

Il existe plusieurs façons d'ouvrir directement un fichier XML. Vous pouvez les ouvrir et les modifier avec n'importe quel éditeur de texte, les afficher avec n'importe quel navigateur Web ou utiliser un site Web qui vous permet de les afficher, de les modifier et même de les convertir dans d'autres formats.

Utilisez un éditeur de texte lorsque vous travaillez régulièrement avec XML

Puisque les fichiers XML sont simplement des fichiers texte, ils peuvent être ouverts dans n’importe quel éditeur de texte. Cependant, de nombreux éditeurs de texte, tels que Notepad, ne sont tout simplement pas conçus pour afficher les fichiers XML avec leur structure correcte. Cela peut être utile pour vous familiariser rapidement avec le contenu d'un fichier XML. Mais il existe des outils plus pratiques pour travailler avec eux.


Utilisation d'un navigateur Web pour afficher un fichier XML

Si vous n'avez pas besoin de modifier le fichier XML, mais souhaitez simplement afficher le contenu, votre navigateur peut gérer cette tâche. De plus, votre navigateur Web est probablement déjà configuré en tant que remède standard visualisation de fichiers XML. Donc, double-cliquez sur le fichier XML pour l'ouvrir dans le navigateur.

Sinon, vous pouvez cliquer avec le bouton droit sur le fichier pour trouver des options permettant de l'ouvrir avec n'importe quelle autre application. Sélectionnez simplement votre navigateur Web dans la liste des programmes.

Lorsque le fichier s'ouvre, vous devriez voir des données bien structurées. Ce n'est pas aussi joli que la couleur que vous obtenez dans Notepad++, mais c'est bien meilleur que le bloc-notes.

Utiliser un éditeur en ligne pour les fichiers XML

Si vous souhaitez modifier un fichier XML aléatoire et ne souhaitez pas télécharger un nouvel éditeur de texte, ou si vous avez besoin convertir le fichier XML dans un autre format Il existe plusieurs éditeurs XML en ligne décents disponibles gratuitement.

TutorialsPoint.com, XMLGrid.net et CodeBeautify.org - Vous permettent d'afficher et de modifier des fichiers XML. Une fois l'édition terminée, vous pouvez télécharger le fichier XML modifié ou même le convertir dans un format différent.

Par exemple, nous utilisons CodeBeautify.org. La page est divisée en trois sections. Sur la gauche se trouve le fichier XML avec lequel vous travaillez. Au milieu vous trouverez plusieurs fonctions. Sur la droite, vous verrez les résultats de certaines des options parmi lesquelles vous pouvez choisir.

Par exemple, dans l'image ci-dessous, notre fichier XML complet se trouve à gauche et le volet des résultats affiche une arborescence car nous avons cliqué sur le bouton Tree View au milieu.

Utilisez le bouton Parcourir pour charger un fichier XML depuis votre ordinateur ou le bouton Charger l'URL pour récupérer du XML à partir d'une source en ligne.

Le bouton Tree View affiche les données dans une arborescence bien formatée dans le volet des résultats, avec toutes les balises surlignées en orange et les attributs à droite des balises.

Beatify affiche vos données dans un format soigné et facile à lire.

Le bouton Réduire affiche vos données en utilisant le moins d'espaces possible. Cette fonction placera chaque élément de données sur une seule ligne. Cela s'avérera utile lorsque vous tenterez de réduire la taille d'un fichier, ce qui permettra d'économiser de l'espace.

Et enfin, vous pouvez utiliser le bouton XML vers JSON pour Transformations XML au format JSON et un bouton Exporter vers CSV pour enregistrer les données sous forme de fichier de valeurs séparées par des virgules, ou un bouton Télécharger pour télécharger toutes les modifications que vous avez apportées au nouveau fichier XML.

Cela fait longtemps que j'ai promis de parler de l'utilisation de données au format XML lors du développement d'applications .NET. Les promesses doivent être tenues. Veuillez noter que cet article ne s'adresse pas aux développeurs .NET professionnels, mais à ceux qui n'ont pas encore d'expérience significative dans la création d'applications .NET.


Pourquoi devrions-nous travailler avec XML ?

Si vous n'avez pas encore une très bonne idée de ce qu'est XML, alors je vous recommande de lire l'article « XML est sérieux et depuis longtemps » dans le n° « KV » de 2007. Afin de gagner de la place pour des choses plus importantes, le format XML lui-même ne sera pas analysé ici.

Avant de commencer à vous familiariser avec le code du programme, vous devez répondre à une question fondamentale : pourquoi même inclure le support XML dans votre application ? Je pense que beaucoup de gens se sont posé cette question concernant de nombreuses technologies, et toutes n'ont pas été incluses dans les applications après la réponse. Cependant, avec XML, la situation est quelque peu différente et il existe de réelles raisons d'utiliser ce format dans de nombreuses situations.

Le principal avantage du XML est que, étant un format texte par nature, il permet néanmoins parfaitement de stocker et de transmettre n'importe quelle donnée. Puisque ce format est du texte, le problème de sa multiplateforme est résolu de lui-même, et le problème de la transmission de données XML est tout aussi facilement résolu (comme c'est le cas, par exemple, dans SOAP). De plus, vous pouvez facilement modifier le format de transfert ou de stockage des données en ajoutant de nouveaux attributs et sans trop vous soucier de la compatibilité avec les versions précédentes du format, puisque les applications utilisant l'ancienne version pourront lire ce dont elles ont besoin sans prêter attention aux nouvelles. balises ou attributs. De nombreuses applications utilisent XML formats de fichiers, de nombreux protocoles de transfert de données sont également basés sur XML, et les listes des deux continuent de s'allonger.

Bien sûr, d'un autre côté, XML n'est pas très économique, car, comme l'a noté à juste titre l'un des visiteurs du forum Computer News, les documents XML sont souvent constitués de 10 % de données et de 90 % de balises. Cependant, cela dépend en grande partie des balises que vous choisissez. Tu peux écrire St. Melnikaïte, 2, Est-il possible . Même si, pour être honnête, il me semble qu'avec les disques durs actuels et les canaux épais, cela n'a aucun sens d'être particulièrement compressé.

Ainsi, entre de bonnes mains, XML est une chose puissante et pratique, et en raison de l’omniprésence de ce format, vous ne pouvez pas du tout y échapper. Alors passons à l'écriture code de programme.

Pour la programmation, nous utiliserons le langage principal de la plateforme .NET - C#. Afin que le plus grand nombre de lecteurs possible s'entraînent eux-mêmes avec le code du programme donné, j'utiliserai la première version de C# et du .NET Framework.


Enregistrement des données

Parlons d’abord de l’écriture de données, car, vous savez, pour lire quelque chose quelque part, vous devez d’abord écrire quelque chose quelque part. Et depuis que vous et moi avons commencé à programmer, il n’est pas approprié pour nous de créer des données XML manuellement. Commençons donc par écrire les données en XML.

Tout d’abord, créez un nouveau projet dans Visual Studio, #Develop ou C# Builder et ajoutez System.Xml à la liste des espaces de noms importés.

Une classe spéciale, XmlTextWriter, est responsable de l'écriture des données XML dans le .NET Framework, ce qui vous permet d'écrire des données XML dans un flux arbitraire. Autrement dit, nous pouvons, de manière générale, l'utiliser pour les écrire dans un fichier, une base de données. , et envoyez-le à quelqu'un via Internet, mais maintenant nous allons tout écrire dans un fichier. Vous pouvez rediriger la sortie en modifiant le constructeur de l'objet (c'est-à-dire en transmettant non pas le nom du fichier et son encodage lors de l'initialisation, mais un objet qui est une donnée. stream). Je pense que j’ai déjà pris un peu d’avance sur moi-même. Faisons d’abord connaissance du code responsable de l’écriture des données dans notre fichier XML.

String FileName = "c:\\demo.xml"; XmlTextWriter xml = new XmlTextWriter(FileName, System.Text.Encoding.Unicode); xml.Formatting = Formatting.Indented; xml.WriteStartDocument(); xml.WriteStartElement("rootelement"); pour (int je = 0; je< 10; i++) { xml.WriteStartElement("subelement"); xml.WriteAttributeString("attrib1", "value1"); xml.WriteAttributeString("attrib2", i.ToString()); for (int j = 0; j < 10; j++){ xml.WriteStartElement("subsubelement"); xml.WriteAttributeString("attr", j.ToString()); xml.WriteEndElement(); } xml.WriteEndElement(); } xml.WriteEndElement(); xml.WriteEndDocument(); xml.Close();

La première ligne, je pense, est assez claire : il s'agit simplement d'enregistrer le nom du fichier dans lequel nous allons sauvegarder les données. Ensuite, nous créons un objet de type XmlTextWriter (il s'appelle, comme vous pouvez le voir, xml), et c'est avec lui que nous effectuerons toutes les opérations ultérieures. Attention, lors de la construction d'un objet, nous précisons également l'encodage dans lequel le XML sera écrit : dans notre exemple, il s'agit d'Unicode. La ligne suivante, d'une manière générale, n'est pas obligatoire, mais elle rendra notre document XML, comme on dit, lisible par l'homme, c'est-à-dire qu'elle ajoutera les retraits nécessaires et le divisera en lignes. Sans cela, l'ensemble du document serait écrit sur une seule ligne, ce qui, bien que permettant d'économiser de l'espace, le rend pratiquement impropre à l'édition manuelle.

L'écriture du document commence par l'appel de la méthode WriteStartDocument() de notre objet XML. La ligne qui le suit ajoute l'élément racine « rootelement » à notre document XML (je vous rappelle que pour les documents XML l'élément racine doit être présent en un seul exemplaire). Ensuite, dans un cycle, nous ajoutons dix éléments supplémentaires qui ne portent aucune charge sémantique à notre document XML, pour chacun desquels nous définissons deux attributs et dix sous-éléments supplémentaires. Veuillez noter que nous pouvons ajouter un nombre à une chaîne sans convertir explicitement les données, mais si le nombre doit entièrement former une chaîne, alors il doit être converti explicitement à l'aide de la méthode ToString(). Notez également qu'il faut fermer explicitement chacun des éléments de notre document XML, puis le document tout entier.

Maintenant que notre document XML a été écrit avec succès, voyons comment nous pouvons en lire les données.


Lecture de données

Ajoutez un composant listBox au formulaire de votre application (à moins bien sûr qu'il s'agisse d'une application console) afin de pouvoir surveiller le résultat de la lecture du fichier XML. Eh bien, si votre programme est un programme console, vous pouvez facilement rediriger la sortie vers la console.

Comme d'habitude, commençons par nous familiariser avec le code du programme, puis nous verrons ce que fait exactement ce code.

XmlTextReader xml = new XmlTextReader(FileName); xml.WhitespaceHandling = WhitespaceHandling.None; entier je = 0 ; while (xml.Read())( if ((xml.NodeType == XmlNodeType.Element) & (xml.Name == "subelement")) ( listBox1.Items.Add("subelement " + i + " found") ; i++; listBox1.Items.Add(" " + xml.GetAttribute("attrib1")); listBox1.Items.Add(" " + xml.GetAttribute("attrib2")); )( listBox1.Items.Add(" " + xml.GetAttribute("attr")); ) ) ) xml.Close();

Pour la lecture, comme vous l'avez peut-être remarqué, nous utilisons une autre classe, à savoir XmlTextReader. C'est dans le même espace de noms que la classe que nous avons utilisée pour écrire les données. Dans la première ligne, nous créons une instance de XmlTextReader, nommée xml (ici nous supposons que la variable FileName a déjà été définie par nous plus tôt). Pour ignorer les lignes vides si elles apparaissent de manière inexplicable dans notre fichier XML que nous venons de créer, nous utilisons ce qui suit. ligne dans le fragment de code donné La variable i est utilisée pour compter le nombre d'éléments de "sous-élément" trouvés dans le fichier XML à partir duquel les données sont lues.

Vient ensuite le cycle de lecture directe des données du fichier. La méthode Read() lit l'élément suivant du document XML, et après l'avoir lu, nous vérifions exactement ce que nous lisons. S'il s'agit bien d'un élément "sous-élément", alors nous ajoutons des informations sur l'élément lu à listBox1, incrémentons une variable contenant le nombre d'éléments lus, puis lisons les attributs de l'élément. Après avoir lu les attributs, nous organisons une boucle séparée pour lire les sous-éléments (notez que nous n'avons pas besoin d'un XmlTextReader séparé pour cela) et les attributs de ces sous-éléments. Comme auparavant, nous entrons toutes les informations lues dans listBox1 pour contrôler l'exactitude de. en lisant.

Lors de la lecture de fichiers XML, de la même manière que lors de leur écriture, lors de la construction d'un XmlTextReader, vous pouvez spécifier en paramètre le flux à partir duquel lire, puis vous pouvez lire non seulement à partir de fichiers, mais également à partir d'autres sources, des exemples de que j'ai déjà donné ci-dessus. Une fonctionnalité utile de la classe XmlTextReader doit être notée : lors de la lecture, elle ne charge pas l'intégralité du document XML en cours de lecture, il est donc pratique d'analyser des documents XML volumineux (par exemple, des bases de données XML). .


Dans les coulisses

En général, l’exemple dont nous venons de parler est trop simple pour des projets réels. De nos jours, lors de la lecture de documents XML, ceux-ci sont généralement validés à l'aide de DTD, XML Schema ou Relax NG. La validation consiste à vérifier que le balisage d'un document XML est conforme à une norme décrite dans fichier externe. La validation est nécessaire pour que la vérification des documents ne soit pas intégrée à l'algorithme du programme, mais puisse être modifiée arbitrairement lorsque le format des données change sans mettre à jour le code du programme qui lit ou écrit les données. Malheureusement, nous n'aurons pas le temps de régler la validation, car, comme vous le comprenez vous-même, le volume d'un article de journal a certaines limites.

Un autre point pratique intéressant et utile concernant le travail avec des données XML est la transformation des données XSL. Cette transformation est appliquée aux données lorsqu'elles sont affichées sur des pages HTML et, en fait, consiste simplement à appliquer un modèle de page Web spécifique à un fichier XML contenant certaines données. Étant donné que la part du lion de l'utilisation actuelle des données XML se fait d'une manière ou d'une autre sur le World Wide Web, il serait très, très bien d'envisager les transformations XSL.

Donc, je pense que cet article aura une suite - mais, bien sûr, seulement si vous-même (c'est-à-dire les lecteurs de Computer News) posez des questions à ce sujet sur le forum ou dans une lettre à mon adresse e-mail. Pour l’instant, il s’agit probablement d’utiliser XML dans les applications .NET. J'espère que ces informations vous seront utiles.

Nous allons maintenant étudier le travail avec XML.

XML est un format d'échange de données entre sites.

Qu'est-ce qu'une API ? Il s'agit d'un ensemble de fonctions avec lesquelles vous pouvez envoyer une demande à ce site et recevoir la réponse souhaitée.

Cette réponse est le plus souvent au format XML. Alors commençons à l'étudier.

Travailler avec XML en PHP

Disons que vous avez XML. Il peut être dans une chaîne, ou stocké dans un fichier, ou servi sur demande à une URL spécifique. Laissez le XML être stocké dans une chaîne. Dans ce cas, vous devez créer un objet à partir de cette chaîne en utilisant:

nouveau SimpleXMLElement $str = " 25 1000 Kolia

"; $xml = nouveau SimpleXMLElement($str); Nous avons maintenant dans la variable$xml

un objet avec XML analysé est stocké. En accédant aux propriétés de cet objet, vous pouvez accéder au contenu des balises XML. Nous verrons comment exactement ci-dessous. Si le XML est stocké dans un fichier ou envoyé en accédant à une URL (ce qui est le plus souvent le cas), alors vous devez utiliser la fonction simplexml_load_file Nous avons maintenant dans la variable:

$str = " 25 1000

, ce qui fait le même objet

$xml = simplexml_load_file(chemin d'accès au fichier ou URL) ;

Méthodes de travail

Dans les exemples ci-dessous, notre XML est stocké dans un fichier ou une URL.

$str = " 25 1000

Soit le XML suivant :

Obtenons le nom, l'âge et le salaire de l'employé :

$xml = simplexml_load_file(chemin d'accès au fichier ou URL) ; echo $xml->nom; //affichera "Kolya" echo $xml->age; // produira 25 echo $xml->salary; // produira 1000

Comme vous pouvez le constater, l'objet $xml possède des propriétés correspondant aux balises. Vous avez peut-être remarqué que la balise n’apparaît nulle part dans l’appel.

$str = " 25 1000

Obtenons le nom, l'âge et le salaire de l'employé :

C'est parce que c'est la balise racine. Vous pouvez le renommer, par exemple, en

- et rien ne changera :

$str = " 25 1000

Il ne peut y avoir qu'une seule balise racine en XML, tout comme la

en HTML brut.

Modifions un peu notre XML :

Dans ce cas, nous obtiendrons une chaîne de requêtes :

$xml = simplexml_load_file(chemin d'accès au fichier ou URL) ; echo $xml->worker->name; //affichera "Kolya" echo $xml->worker->age; // produira 25 echo $xml->worker->salary; // produira 1000

Travailler avec des attributs

Laissez certaines données être stockées dans des attributs :

Numéro 1

$str = " $xml = simplexml_load_file(chemin d'accès au fichier ou URL) ; echo $xml->worker["nom"]; //affichera "Kolya" echo $xml->worker["age"]; // produira 25 echo $xml->worker["salary"]; // produira 1000 echo $xml->worker; //affichera "Numéro 1"

Balises avec tirets

XML autorise les balises (et attributs) avec un trait d'union. Dans ce cas, l'accès à ces balises se produit comme ceci :

Ivanov

$str = " 25 1000 $xml = simplexml_load_file(chemin d'accès au fichier ou URL) ; echo $xml->worker->(prénom); //affichera "Kolya" echo $xml->worker->(last-name); //affichera "Ivanov" 26 2000 Boucle 27 3000

$xml = simplexml_load_file(chemin d'accès au fichier ou URL) ; foreach ($xml as $worker) ( echo $worker->name; //affichera "Kolya", "Vasya", "Petya")

De l'objet au tableau normal

Si vous n'êtes pas à l'aise avec l'objet, vous pouvez le convertir en un tableau PHP normal en utilisant l'astuce suivante :

$xml = simplexml_load_file(chemin d'accès au fichier ou URL) ; var_dump(json_decode(json_encode($xml), true));

Plus d'informations

Analyse basée sur sitemap.xml

Souvent, un site possède un fichier sitemap.xml.

Ce fichier stocke des liens vers toutes les pages du site pour faciliter l'indexation par les moteurs de recherche (l'indexation est essentiellement une analyse du site par Yandex et Google).

En général, nous ne devrions pas trop nous soucier de la raison pour laquelle ce fichier est nécessaire, l'essentiel est que s'il existe, vous n'avez pas besoin d'explorer les pages du site en utilisant des méthodes délicates, mais simplement d'utiliser ce fichier.

Comment vérifier la présence de ce fichier : analysons le site site.ru, puis allons sur site.ru/sitemap.xml dans le navigateur - si vous voyez quelque chose, alors il est là, et si vous ne le voyez pas, alors hélas.

S'il existe un plan du site, alors il contient des liens vers toutes les pages du site au format XML. Prenez calmement ce XML, analysez-le, séparez les liens vers les pages dont vous avez besoin de la manière qui vous convient (par exemple, en analysant l'URL décrite dans la méthode spider).

En conséquence, vous obtenez une liste de liens à analyser ; tout ce que vous avez à faire est d'y accéder et d'analyser le contenu dont vous avez besoin.

En savoir plus sur le périphérique sitemap.xml sur Wikipedia.

Que devez-vous faire ensuite :

Commencez à résoudre des problèmes en utilisant le lien suivant : problèmes pour la leçon.

© 2024 ermake.ru -- À propos de la réparation de PC - Portail d'information