php-无法从字符串解析XML-Laravel存储

php-无法从字符串解析XML-Laravel存储,php,xml,laravel,Php,Xml,Laravel,我用的是拉威尔。我已经按照文档所说的那样安装了它,我正试图用它来读取服务器上可用的XML文件。我有一个FTP服务器,自动报告将发送到该服务器。我需要将文件从FTP服务器下载到我的公共磁盘: //Search for the files. $fileName = array_filter(Storage::disk('ftp')->files("/reports"), function ($file) { //This get filename fro

我用的是拉威尔。我已经按照文档所说的那样安装了它,我正试图用它来读取服务器上可用的XML文件。我有一个FTP服务器,自动报告将发送到该服务器。我需要将文件从FTP服务器下载到我的公共磁盘:

    //Search for the files.
    $fileName = array_filter(Storage::disk('ftp')->files("/reports"), function ($file)
    {
        //This get filename from the FTP server (/reports folder), that includes the current date (YYYY-MM-DD) in the file name.
        return preg_match('/'.date("Y", time()).'\-'.date("m", time()).'\-'.date("d", time()).'(.*)\.[a-zA-Z]{3}/m', $file);

    });
我可以用上面的代码在我的FTP服务器上找到文件。它起作用了

接下来,我将文件从我的FTP服务器移动到我的公用服务器:

    //Set the new filename. We use this later on, when we move the file.
    $new_fileName = "milestone_report_".date("Y-m-d", time()).".xml";
    //$fileName[0] already includes the /reports path.
    $move_file = Storage::disk("public")->put("/reports/".$new_fileName."", Storage::disk('ftp')->get($fileName[0])); 
这也行得通。最后,我需要能够使用
XmlParser
读取/获取.xml文件的内容。我确实喜欢文档中描述的:

//Load the new file, so we can use it with the "xml parser package"
$xml = XmlParser::load("/storage/app/public/reports/".$new_fileName."");
但是,上面给出的错误如下:

无法从字符串解析XML。

  • 我已经验证了XML文件确实位于我在Laravel中的存储文件夹中/存储/应用/公共/报告
更新:

我试着从我的公用文件夹
www.domain.com/xmlfile.XML
加载一个XML文件,这一切正常

如何使用XmlParser从存储中加载

    -
    所以我想出了这个办法。我没有使用
    XmlParser::load()
    函数,而是使用
    XmlParser::extract()
    函数,并使用
    Storage::disk()
    提取文件,如下所示:

    $xml = XmlParser::extract(Storage::disk('public')->get("/reports/".$new_fileName.""));
    

    它给我错误“无法从字符串解析XML”的原因是因为以前我只获取XML文件的路径(它只是一个字符串)
    XmlParser
    需要将文件直接加载到方法中

    为什么XmlParser比SimpleXML好?如果你知道,请分享。非常感谢。