Je comprends le but de XML, mais j'entends toujours les gens se plaindre de sa mauvaise réputation? Je ne comprends pas vraiment ce qui est si mauvais à ce sujet? J'entends d'habitude les termes "ballonné" et "lent" ballottés.
Mais je suppose qu'en tant que programmeurs, vous l'utilisez principalement. Et considérez-vous vraiment que c'est "mauvais" ... parce que, si c'est le cas, beaucoup de gens l'utilisent pour le transport de données ...
Réponses:
Le XML est idéal pour ce à quoi il a été conçu - un protocole de transfert de données lisible par un humain, neutre pour la plate-forme, doté de fonctions permettant de valider la validation des données à un niveau bas. Je doute que quiconque utilise Xml de cette manière ait une véritable plainte. Est-ce le format de fil le plus succint? Non, mais il y a des options pires. Est-ce aussi rapide que de lire votre format binaire personnalisé? Non, mais vos partenaires commerciaux peuvent le lire dans la pile qu'ils utilisent.
Le problème, cependant, est que les humains - en particulier la race connue sous le nom d'architectes d'entreprise - sont méchants et prennent de bonnes choses et les rendent mauvaises. Dans le cas de XML, le début de ce siècle a vu Xml comme le marteau universel pour tous les problèmes informatiques. Saupoudrez un petit motif de la part du comité et vous vous retrouverez avec des monstruosités horribles comme SOAP et oXML . Ce qui ne devrait être souhaité ni sur des ennemis, ni sur des amis, ni sur des collègues.
la source
XML est juste un outil qui vient dans beaucoup de saveurs et utilise. XML excelle dans certaines choses et aspire les autres. Je pense qu'un des problèmes est que les gens ont vu un XML "d'entreprise" inutilement complexe, avec des espaces de noms et de la merde éparpillés (SOAP, ça vous tente?). La difficulté pour concevoir des formats XML pour les humains consiste à donner un sens réel aux données sans les rendre lues à lire.
L’un des problèmes que rencontrent les gens est que XML étouffe parfois un caractère ou un crochet manquant. Il y a cependant un avantage et un inconvénient à cela. L'avantage est que vous n'avez pas d'ambiguïté comme vous avez avec HTML, où différents cas de syntaxe semi-invalide peuvent être interprétés différemment.
L'inconvénient est qu'il est un peu plus difficile à écrire et à apprendre. Je conviens qu’il ya lieu de dire que le Web n’aurait pas été aussi grand si le code HTML était aussi strict que le XML, mais je dirais aussi que nous serions heureux de le faire aujourd’hui. :)
Aussi, ne l'utilisez pas pour tout simplement parce que vous pouvez, avoir le sens et le jugement pour l'appliquer correctement. Si tout ce que vous avez est XML, vous avez tendance à toujours être une transformation XSLT loin de ce que vous voulez. :)
Je dirais que le format ne compte vraiment que lorsque les humains doivent interagir avec lui. Si vous écrivez un programme qui sérialise quelque chose et l'envoie quelque part où il doit être consommé par un autre de vos programmes, qui se soucie de son apparence tant que c'est aussi efficace que possible? Utilisez un format binaire ou des lapins et des licornes pour tous mes soucis.
Avantages de XML
Les inconvénients
Bonnes utilisations
Pas si bons usages
la source
Jeff Atwood a un très bon billet sur XML: The Angle Bracket Tax à ce sujet si vous voulez une source en parler.
Les utilisations les plus courantes que j'ai pour cela sont:
Les services se parlent. Par exemple, un site Web utilisant un système de gestion de contenu doit envoyer des données à un système de gestion de la relation client, à l'aide de XML.
Stockage de configuration. Web.config et app.config étant des exemples courants, les scripts nAnt peuvent également utiliser du code XML.
Je ne pense pas que ce soit optimal mais cela seul ne le rend pas mauvais pour moi.
la source
Deux raisons:
la source
<Problem:Worsening> <Problem:TimeDescription>Now</Problem:TimeDescription> <Problem:Posessive>they have</Problem:Posessive> <Problem:Quantity>many, many</Problem:Quantity> <Problem:WorseningDescription>more problems</Problem:WorseningDescription> </ProblemWorsening>
Ce n'est pas la syntaxe la plus compacte, mais c'est clairement la plus expressive. Lisible par l'homme? Cela dépend de la façon dont vous concevez votre langue. La plupart des gens ne conçoivent pas de langage XML, ils se contentent de sérialiser des objets au format XML.
C'est omniprésent. Vous pouvez interroger une base de données XML avec XQuery, transformer les résultats avec XSLT en XHTML ou Atom, obtenir le format Atom ou un autre format XML à partir d'autres services Web, obtenir le code XML des utilisateurs utilisant XForms, le valider avec XMLSchema, Relax NG ou Schematron, le traiter avec XProc, enregistrez-le dans la base de données avec XQuery Update. Tous ces outils comprennent le langage XML, il n'est donc pas nécessaire de mapper des représentations différentes.
XML n'est pas une technologie de sérialisation, c'est un ensemble d'informations à usage général.
la source
Ici, nous l'utilisons pour l'échange de données entre différents systèmes réalisés par différents fournisseurs avec différentes représentations internes. Nous construisons un système de transformation / échange XML pour transférer les données dans les deux sens. Cela fonctionne bien pour cela.
XML n'est pas intrinsèquement mauvais, mais je reconnais que concevoir une "bonne" solution à l'aide de XML n'est pas trivial.
la source
"L'essence de XML est la suivante: le problème qu'il résout n'est pas difficile, et cela ne résout pas bien le problème." - Phil Wadler, POPL 2003
Mon opinion personnelle est que tant que vous ne vous souciez pas de la validation, des schémas, des XSLT et du reste des trucs laids et que vous gardez la taille des fichiers réduite (sinon, l'analyse devient lente), vous pouvez trouver de bonnes utilisations de XML (un exemple sert à configurer votre application au lieu d’utiliser des fichiers INI).
la source
D'après mon expérience, les gens se plaignent principalement de la façon dont ils sont utilisés, pas de la technologie elle-même.
Les bits lents et lents sur lesquels les gens se plaignent sont généralement les bibliothèques / méthodes utilisées pour extraire les informations.
Je l'utilise pour stocker de petites quantités d'informations structurées que je souhaite stocker sur disque (sans base de données ni sérialisation binaire), ou transmis à une autre application (qui décrit également SOAP).
la source
C'est bon parce que:
C'est une "interface" standard que plusieurs systèmes hétérogènes peuvent utiliser pour communiquer avec. Et est "humain" lisible (en quelque sorte, essayez de regarder 5 MB XML)
C'est mauvais parce que:
Sa taille gonflée et plus grande = plus de bande passante = plus $$
Il y a d'autres raisons, tout le monde a un reproche différent ...
la source
<advanceAcceptanceIndicator>Y</advanceAcceptanceIndicator>
Le ratio données / balisage est si bas ... J'appelle cela "gonflé". JSON, par exemple, ne serait que la moitié gonflée:advanceAcceptanceIndicator: "Y"
. Il existe également le fait que le texte entre les balises est valide. Par conséquent, lors de la lecture de XML, vous devez décider quoi faire avec cette procédure crue\n\t\t\t
, et la solution consiste généralement à simplement l'ignorer, car cela ne vous a jamais vraiment intéressé.value
?) Serait probablement supérieure aussi, car les gens pourraient être tentés d'insérer des espaces entre deux Mots clés.Comme pour toute autre technologie: il existe de nombreux outils et bibliothèques.
Je n'aime pas le XML, surtout parce que c'est génial, quand les gens disent que c'est lisible par l'homme, ils plaisantent, je pense, ou n'ont jamais vraiment lu un xml quand on a essayé d'incorporer du xml dans un attribut ... les entités xml le rendent vraiment illisible. En outre, il est étonnant de constater combien d'espace est gaspillé à cause de la balise d'extrémité redondante et de la possibilité de mélanger du texte libre et des données ...
Mais:
Il a également l'avantage de la préséance, la plupart du temps. Lorsque vous fournissez déjà des services Web au format XML et que vous demandez un nouveau service ... cela se fera probablement au format XML, car c'est ce que vous savez.
la source
data Person = Person { surname :: String, firstName :: String, age :: Int }
si je vois alorsPerson "Doe" "John" 42
qu'il est aussi lisible, et évite beaucoup de choses cruelles, pourtant elles sont plus proches des virgules.XML est un mauvais choix pour les fichiers qui doivent être conservés par des humains. Il n'y a pas de séparation visuelle entre le balisage et le contenu, ce qui rend la lecture difficile. Il est fastidieux d’écrire correctement sans éditeur spécial. Toute erreur dans un document XML est fatale; un document XML ne peut pas être traité partiellement. Lorsqu'un fichier XML n'est pas valide, le message d'erreur résultant est souvent inutile.
Pour tout fichier devant être géré par un humain, je préférerais utiliser un code JSON, YAML ou un code source dans un langage interprété (Python, Ruby, Groovy, etc.). Nous avons constaté que l’utilisation de Groovy MarkupBuilder constitue un excellent moyen de créer une configuration XML pour le code existant. Un autre bon choix consiste à créer un langage spécifique à un domaine. c'est assez facile à faire avec Ruby, Groovy et beaucoup d'autres langues.
la source
L'analyse est relativement facile tout en étant lisible par l'homme.
Et quelques bons analyseurs (par exemple Xerces {c ++}) sont facilement disponibles.
la source