Le XML suivant Il semble que Delphi < em> delphi strud> em> semble gérer cela ok: p> puisque je reçois les données d'un service Web reposant, je n'ai pas particulièrement le contrôle de Les paquets XML qui traversent, je dois juste pouvoir les lire. P> questions strong> p> Utiliser Delphi 2010. Toute aide serait appréciée. P> p>
3 Réponses :
Delphi lui-même n'analyse pas le XML du tout. Un moteur XML troisième partie fait, qu'il s'agisse de msxml, openxml, atomxml, etc. Le composant TXMLDocument et les interfaces de support ne sont qu'un cadre d'enveloppe, la majeure partie de l'analyse est effectuée par quelqu'un d'autre. P>
v1 peut être mal formé. Cela dépend de la création réelle de XML. P>
v2 n'est en fait pas standard. Tous les moteurs XML ne le soutiennent pas. Clairement, celui que vous utilisez avec Delphi ne le fait pas. P>
V3 est normalisé et tous les moteurs XML prennent en charge la syntaxe. P>
En ce qui concerne v3, je dirais que "tous les Les moteurs XML ci-dessus i> xml prennent en charge cette syntaxe" (ou au moins Devraient i> le soutenir).
@Kobik, s'il y a quelque chose qui ne prend pas en charge les références de caractères numériques, je lutterais pour le classer comme un analyseur XML.
@kobik NCRS fait partie de la norme XML, donc si un analyseur ne peut pas les gérer, ce n'est pas un analyseur XML.
Il semble que mon éditeur de texte Notepad ++ a commuté mon codage sur ANSI (voir ci-dessous), donc peu importe ce que j'ai mis dans l'en-tête XML, il n'était pas réellement codé b> de cette façon.
V3: <Item Id="1" Description="90° Hinge"/>
J'ai vérifié mon document XML et c'était pas B> Codage à l'aide de UTF-8, j'ai donc changé l'en-tête XML sur Xml version = "1.0" coding = "utf-8"?> < / Code> Mais cela n'a pas semblé avoir d'effet du tout. J'utilise MSXML et il semble toujours d'élever une erreur avec la ° Codage dans UTF-8.
Changer l'en-tête ne change pas le codage du fichier actuel. Si le fichier est codé correctement, vous pouvez encoder directement tout caractère Unicode.
Il semble que mon éditeur de texte Notepad ++ a commuté mon codage sur ANSI (voir ci-dessous), donc peu importe ce que j'ai mis dans l'en-tête XML, il n'était pas réellement codé b> de cette façon.
Non. Notepad ++ ne change pas votre codage. Votre dossier était ANSI tout le long. Comme je l'ai dit, disant dans l'en-tête que le fichier est UTF8 ne le fait pas UTF8. Je vous ai déjà dit que si votre fichier est correctement codé, vous pouvez entraver directement tout caractère Unicode à part des caractères réservés tels que <> & et ainsi de suite.
OK, cela signifie-t-il que Delphi ne génère pas le fichier correctement codé dans UTF-8? J'ai créé le fichier à l'aide du TXMLDocument, j'ai créé mes nœuds, puis l'enregistré dans le fichier. Tout ce que j'ai fait après c'était l'ouvrir dans le Bloc-notes ++ et faire des modifications mineures. Quelque part est devenu un format ANSI, directement à partir de Delphi ou après une économie dans Notepad ++. Une idée quand cela se produirait?
Vous pouvez tout travailler depuis que vous avez le code. Je ne. Je vous suggère de demander à Leonardo de l'aide puisque vous avez accepté sa réponse.
Juste élaborant sur la réponse de David, XML n'exclut aucune valeur dans un nœud texte (à l'exception de très peu de caractères réservés) tant qu'ils sont valides dans le codage actuel. P>
Il y a quelques faits manquants de votre question: p>
Produillez-vous ce XML à l'aide d'un éditeur de texte? strong>
Si tel est vrai, vous devez vérifier ce que l'encodage utilisez-vous lors de la sauvegarde du fichier. Essayez utf-8. Si vos documents sont produits à l'aide d'un codage "Windows", essayez d'ajouter un attribut d'encodage à la balise de contrôle XML, c'est-à-dire que Produisez-vous ce XML à l'aide de fonctions de chaîne Delphi? strong>
Si tel est le cas, le codage utilisé par Delphi est par défaut UF-8, mais vous pouvez le mélanger par inadvertance avec d'autres codages si vous lisez des fragments de sources externes. Pour ce problème, il n'y a pas de balle d'argent, à l'exception de votre bibliothèque XML Fonctions intégrées pour créer XML. P> LI>
ol>
Quand j'ai dû traiter ces choses (pour les signatures XML, pas moins!) J'ai eu recours à des emballages pour n'importe quelle chaîne utilisée et utilisez des codages explicites (j'utilise Xml version = "1.0" coding = "ISO-8859-1"?> Code> . P> li>
type Latin1String = Type Ansistring (28591) < / code>.) p>
Merci, c'est la bonne réponse. J'ai initialement produit le fichier de Delphi en utilisant toutes les défaillances que cela m'a donné. Cependant, j'ai ensuite ouvert et édité le fichier à l'aide de Notepad ++, qui semble le revenir à ANSI. Je suis donc allé dans le menu Format, sélectionné l'option UTF-8 puis vous êtes assuré que My ° Le personnage avait l'air correct et BAM - ça a fonctionné! Merci beaucoup, j'ai appris quelque chose de nouveau déjà et il n'est que 10h00 le lundi matin!