我需要创建一个CRON作业,每周要读取一个XML文件。 XML文件包含有关一系列电影院所有节目的信息。 我要做的是读取XML文件,提取每个演出所需的信息,然后将每个演出上传到数据库。但是,当我开始嵌套for循环时,我遇到了麻烦。 我希望每个元组都包含以下信息:
瓷砖| FilmWebNr |评分|版本|中心|屏幕|日期|时间|
XML的URL为http://217.144.251.113/static/Shows_FilmWeb.php
Here是一个粘贴框,在这里我尝试列出每个标题每个屏幕的所有日期。 Here是结果。如您所见,只有每个“标题”有多个屏幕时才显示日期。我不明白为什么属性数组并不总是可用。
我很难获得最后三个(屏幕,日期和时间)。
$map_url = "http://217.144.251.113/static/Shows_FilmWeb.php";
$response_xml_data = file_get_contents($map_url);
$data = simplexml_load_string($response_xml_data);
$array = (array) simplexml_load_string($response_xml_data);
$json = json_encode($array);
$configData = json_decode($json, true);
$movies = $configData['Performances']['Title'];
foreach ($movies as $title) {
echo "Title: " . $title['@attributes']['Name'] . '<br/>';
echo "FilmWebNr: " . $title['FilmWebNum'] . '<br/>';
echo "Rating: " . $title['TitleRating'] . '<br/>';
echo "Version: " . $title['TitleVersion'] . '<br/>';
echo "Center: " . $title['Center']['@attributes']['Name'] . '<br/>';
foreach ($title['Center']['Screen'] as $screen) {
//here I run into trouble
}
}
让我尝试在内部循环中添加以下内容:
$screen['@attributes']['Name'];
我收到一条错误消息:“未定义索引:@attributes”。 因此,有时属性似乎在数组中,但有时不在数组中。即使它始终是XML的一部分。
答案 0 :(得分:1)
与其去研究XML-JSON-Arrays,不如去学习如何使用SimpleXML,这会更好。
最主要的是要习惯各种元素的分层方式,并使用foreach
循环在块上进行迭代...
$map_url = "http://217.144.251.113/static/Shows_FilmWeb.php";
$response_xml_data = file_get_contents($map_url);
$data = simplexml_load_string($response_xml_data);
$movies = $data->Performances->Title;
foreach ($movies as $title) {
echo "Title: " . $title['Name'] . '<br/>';
echo "FilmWebNr: " . $title->FilmWebNum . '<br/>';
echo "Rating: " . $title->TitleRating . '<br/>';
echo "Version: " . $title->TitleVersion . '<br/>';
echo "Center: " . $title->Center['Name'] . '<br/>';
foreach ($title->Center->Screen as $screen) {
echo "screen:".$screen['Name']. '<br/>';
foreach ( $screen->Date as $date ) {
echo "Date:".$date['Name']. '<br/>';
foreach ( $date->ShowID as $showID ) {
echo "Time:".$showID->Time. '<br/>';
}
}
}
}