У меня есть куча файлов XML в каталоге storage/xml
.
Я хочу получить все файлы из этого каталога, а затем проанализировать каждый из них.Я пытаюсь использовать simple_xml для этого, но я получаю различные ошибки, как показано ниже.
Попытка # 1:
$files = Storage::files('xml'); //get all files in the dir
foreach($files as $file){
$xml = simplexml_load_file($file);
}
Это дает нам:
simplexml_load_file(): I/O warning : failed to load external entity "xml/srml-21-2010-f339048-matchresults.xml"
Однако file xml/srml-21-2010-f339048-matchresults.xml
существует и является действительным файлом XML.Я успешно проанализировал его с обычным PHP на другом сервере.
Попытка # 2:
$files = Storage::files('xml'); //get all files in the dir
foreach($files as $file){
$file_contents = Storage::get($file);
$xml = simplexml_load_string($file_contents) or die("Error: Cannot create object");
logger()->debug($xml);
}
Это не выдает никаких ошибок, но когда я пытаюсь записать результат, вЯ обнаружил, что в файле журнала logger()->debug($xml)
печатаются только 3 пустые строки.Ничего более.Однако, если я попробую logger () -> debug ($ file_contents), я получу то, что выглядит как правильные данные:
[2019-04-24 14:50:31] local.DEBUG: <?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2001-2019 Opta Sportsdata Ltd. All rights reserved. -->
<!-- PRODUCTION HEADER
produced on: valde-jobq-a01.nexus.opta.net
production time: 20190304T081850,751Z
production module: Opta::Feed::XML::Soccer::F7
-->
<SoccerFeed TimeStamp="20190304T081848+0000">
<SoccerDocument Type="Result" detail_id="1" uID="f339048">
<Competition uID="c21">
etc etc
Я не хочу использовать такую библиотеку, как XmlParser (или любую другую библиотеку).У меня не возникнет проблем с разбором данных, мне просто нужна помощь, чтобы получить их.Что я делаю не так?