您好,当我尝试解析XML文件时遇到问题
例如,我尝试仅使用id显示一首歌曲内容
mysongs.php?id = 0 它应该显示“我在Europa上留下了我的心”这首歌
,如果mysongs.php?id = 1
应该播放“哦,Ganymede”歌曲
我要使用ID代替歌曲编号
我的问题是,当我使用[$id]
而不是数字[0]
无效时
echo $mysongs->song[$id]->title;
请问如何解决我的问题
这是我的XML文件内容songs.xml
<album>
<song dateplayed="2011-07-24 19:40:26">
<title>I left my heart on Europa</title>
<artist>Ship of Nomads</artist>
</song>
<song dateplayed="2011-07-24 19:27:42">
<title>Oh Ganymede</title>
<artist>Beefachanga</artist>
</song>
</album>
下面的我的PHP代码
<?php
$id = $_GET['id'];
$mysongs = simplexml_load_file('songs.xml');
echo $mysongs->song[0]->title;
?>
答案 0 :(得分:1)
可能是类型问题。
尝试回显id的类型,除非您将其解析为字符串:
<?php
$id = $_GET['id'];
echo gettype($id);
然后,当您执行$mysongs->song[$id]
时,它不等于$mysongs->song[0]
,而是等效于$mysongs->song['0']
,它不是相同的索引。
因此,要获得预期的输出,应在将其用作索引之前将其强制转换为int。为此,您可以使用强制转换($id = (int) $_GET['id'];
)或PHP版本intval($id = intval($_GET['id']);
然后最终结果看起来像是...
<?php
$id = (int) $_GET['id'];
$mysongs = simplexml_load_file('songs.xml');
echo $mysongs->song[$id]->title;
答案 1 :(得分:0)
您需要将id设置为xml文件中column参数的一部分
在下面尝试代码
<album>
<song dateplayed="2011-07-24 19:40:26">
<id>1</id>
<title>I left my heart on Europa</title>
<artist>Ship of Nomads</artist>
</song>
<song dateplayed="2011-07-24 19:27:42">
<id>2</id>
<title>Oh Ganymede</title>
<artist>Beefachanga</artist>
</song>
</album>
您可以使用以下两种方法获得结果
1。)使用直接元素方法
下面的示例获取“ .xml”文件的第一个和第二个元素中and元素的节点值:
<?php
$id = $_GET['id'];
$mysongs = simplexml_load_file('songs.xml')or die("Error: Cannot create object");
//get the first record
echo $mysongs->song[0]->id;
echo $mysongs->song[0]->title;
//get the second record
echo $mysongs->song[1]->id;
echo $mysongs->song[1]->title;
?>
2。)使用元素循环方法
<?php
$mysongs=simplexml_load_file("songs.xml") or die("Error: Cannot create object");
foreach($mysongs->children() as $song_album) {
echo $song_album->id . ", ";
echo $song_album->title . ", ";
echo $song_album->artist . "<br>";
}
?>