Quelle est votre façon de déboguer les exceptions liées à xml?

11

Je code avec Magento 2 dans gvim et je suis nouveau sur Magento 2.

Il y a eu plusieurs fois j'ai eu du mal à déboguer les erreurs liées au xml, eh bien, chaque fois avec seulement de la chance. Mais des situations comme celle-ci me mettent vraiment en colère: vous ne savez pas où se trouve le fichier qui cause cette erreur, et le débogueur ne le dit pas non plus.

Prenez ce qui suit je reçois ceci: un fichier xml n'est pas valide. en fait, j'ai créé un module qui a module.xml, routes.xml, config.xml, {layout} .xml, di.xml sous son etc, ou des répertoires view / layout. La ligne de quel fichier 12/89 / .. n'est pas valide? celui généré / fusionné? Je suis perdu parce que je ne trouve rien dans var / généré et la ligne de commande cesse de fonctionner. Quelle est la façon de déboguer pour trouver quelle est cette erreur.?

Toute aide est appréciée.

Erreur fatale: Magento \ Framework \ Exception \ LocalizedException non récupéré: élément de document non valide 'élément': la définition de type est abstraite. Ligne: 12 Élément 'item', attribut 'name': Le XPath '@name' d'un champ de contrainte d'identité clé 'itemName' est évalué en un ensemble de nœuds avec plus d'un membre. Ligne: 89 Élément 'item': tous les champs de la contrainte d'identité clé 'itemName' ne sont pas évalués en un nœud. Ligne: 89 Élément 'item', attribut 'name': Le XPath '@name' d'un champ de contrainte d'identité clé 'itemName' est évalué en un ensemble de nœuds avec plus d'un membre. Ligne: 90 Élément 'item': tous les champs de la contrainte d'identité clé 'itemName' ne sont pas évalués en un nœud. Ligne: 90 in /var/www/html/lib/internal/Magento/Framework/Config/Reader/Filesystem.php:

robertshare
la source
2
Me cogner la
la façon de "déboguer" ceux-ci est vraiment d'utiliser les xsd fournis (cela signifie également utiliser phpstorm) ou simplement des essais et erreurs. Vous pourriez peut-être écrire un script de vérification xsd
David Verholen

Réponses:

4

L'exception levée vous indique que vous utilisez un élément <item />où vous n'êtes pas autorisé à en utiliser un. Alors oui, votre problème est probablement lié à XML.

La première chose que je fais pour m'assurer d'écrire du XML valide est de configurer mon IDE afin qu'il puisse correctement mapper les schémas XSD. Dans PhpStorm, vous pouvez le faire en utilisant le helper-thingy laissé à xsi-namespace:

définir l'espace de noms dans PhpStorm

Lorsque tout est correctement configuré, votre IDE configurera la complétion de code pour vous et vous avertira si vous faites quelque chose qui n'est pas autorisé:

info-bulle 1

info-bulle 2

J'espère que cela vous aide.

Giel Berkers
la source
Merci. J'ai lu l'introduction sur le support xsd sur devdocs qui dit qu'en ce moment, seuls les phpstorm sont pris en charge (en raison de son espace de noms unique stlye?). En raison de phpstorm consomme trop de mémoire sur mon bureau fedora, je me résous à gvim auquel je suis habitué. Bien que je mette à niveau vers vim 8, le xml xsd ne prend toujours pas en charge mage2 '.
robertshare
2
utiliser bin/magento dev:urn:generate .idea/misc.xmlpour générer le mappage xsd pour PHPStorm. Il pourra résoudre tous les chemins d'urnes à partir de xmls.
Sergii Ivashchenko