您调试xml相关异常的方式是什么?


11

我在gvim中使用Magento 2编码,而我是Magento 2的新手。

好几次,我每次都只能靠运气来调试与XML相关的错误。但是这种情况让我真的很沮丧:您不知道导致此错误的文件在哪里,调试器也不告诉这两个。

采取以下措施,我得到了:xml文件无效。实际上,我已经创建了一个模块,其中包含module.xml,routes.xml,config.xml,{layout} .xml,di.xml等,或下面的view / layout目录。哪个文件的第12/89 / ..行无效?生成的/合并的一个?我迷路了,因为在var / generated中什么都找不到,并且命令行停止工作。查找此错误是什么的调试方式是什么?

任何帮助表示赞赏。

致命错误:未捕获的Magento \ Framework \ Exception \ LocalizedException:无效的文档元素“项目”:类型定义是抽象的。行:12个元素“ item”,属性“ name”:关键身份约束“ itemName”字段的XPath“ @name”求值为一个具有多个成员的节点集。行:89元素“ item”:并非关键标识约束“ itemName”的所有字段都评估为一个节点。行:89元素“ item”,属性“ name”:关键身份约束“ itemName”字段的XPath“ @name”求值为一个具有多个成员的节点集。行:90元素“ item”:并非关键身份约束“ itemName”的所有字段都评估为一个节点。第90行在/var/www/html/lib/internal/Magento/Framework/Config/Reader/Filesystem.php中:


2
我的头撞在墙上...
tjons

真正“调试”这些方法的方法是使用提供的xsd(也意味着使用phpstorm)或只是反复试验。您也许可以编写自己的xsd检查脚本
David Verholen

Answers:


4

抛出的异常告诉您,您正在使用<item />不允许使用某个元素的元素。是的,您的问题可能与XML有关。

确保编写有效XML的第一件事是设置我的IDE,以便它可以正确映射XSD方案。在PhpStorm中,您可以使用xsi-namespace 左边的helper-thingy来完成此操作:

在PhpStorm中设置名称空间

一切设置正确后,您的IDE将为您设置代码完成功能,并在您执行不允许的操作时警告您:

工具提示1

工具提示2

希望对您有所帮助。


谢谢。我在devdocs上阅读了有关xsd支持的介绍,该介绍说,现在仅支持phpstorm(由于其唯一的命名空间stlye?)。由于phpstorm占用了我的fedora桌面太多的内存,因此我决定使用我惯用的gvim。虽然我升级到vim 8,但是xml xsd仍然不支持mage2'方式。
robertshare

2
用于bin/magento dev:urn:generate .idea/misc.xml为PHPStorm生成xsd映射。它将能够解析xml中的所有urn路径。
Sergii Ivashchenko '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.