【问题标题】:Unable to open xml file无法打开xml文件
【发布时间】:2021-01-14 14:19:18
【问题描述】:

这是我正在使用的 trh 代码

  $xmlfile = "Controller\thexmlfile.xml";
  $reader = new XMLReader();
  $reader->open($xmlfile);

...这是我收到的信息:

警告:XMLReader::open():无法打开源数据

我正在使用 Symfony,xml 文件与控制器位于同一文件夹中。

【问题讨论】:

  • ' $xmlfile = "Controller\ElevesAvecAdresses.xml"; $reader = 新的 XMLReader(); $reader->open($xmlfile); '
  • 我认为这里没有足够的信息来帮助您:我们看不到文件在哪里,或者它包含什么。您是否尝试过指定完整路径,而不是相对路径?
  • 是的,我现在试过了,它仍然无法正常工作,我也在 symfony 中开发,xml 文件与代码 php 文档位于同一文件夹中。

标签: php xmlreader


【解决方案1】:
   // $xmlfile = "Controller\\thexmlfile.xml";
   $xmlfile = "Controller/thexmlfile.xml";
   $reader = new XMLReader();
   $reader->open($xmlfile);

您的路径字符串中有错字。

在字符串中,\t 标记被更改为制表符,因此您无法打开文件。

您可以使用双反斜杠在字符串中添加文字反斜杠或使用正斜杠(Windows 也支持此路径分隔符)。

我会使用第二种解决方案(在 摘录),因为它不太容易出错(对我来说,忘记字符串中的斜线是一件轻而易举的事)并且在 windows 和 linux/unix 环境中无需修改即可工作。

附录:

将加载和解析分成两条不同的指令,可以检查文件系统或 xml 解析阶段是否有问题。

   // $xmlfile = "Controller\\thexmlfile.xml";
   $xmlfile = "Controller/thexmlfile.xml";
   $xmlContent = file_get_contents($xmlFile);
   // HERE you can test if the content of the file is ok
   $reader = XMLReader::XML($xmlContent);

【讨论】:

  • $xmlfile = "App\\Controller\\data\\ElevesAvecAdresses.xml";我试过了,它仍然无法正常工作,就像它没有找到文件一样,但文件在那里并且我也在 symfony 中开发
  • 如果使用文件的绝对路径,是否有效?根据您当前的目录,您使用的实际路径可能是错误的。您可以通过getcwd function 找到您在文件系统中的位置
  • 我尝试了绝对路径,但它不起作用,有没有其他方法可以在 symfony 中读取 xml filewsing php?
  • @AltiBALLA 尝试将过程分成两个阶段,首先读取文件,然后将内容放入阅读器。您将有机会测试出了什么问题。
  • @AltiBALLA 来自 PHP 文档评论:php.net/manual/en/xmlreader.open.php#120266 看来您必须使用file:// 协议来打开文件,而不仅仅是路径。值得一试 (^_-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 2019-04-14
  • 2014-11-13
  • 1970-01-01
相关资源
最近更新 更多