我想知道是否有人能帮我。
我有下面的xml文件,我需要从其中两个文件属性中提取值,更准确地说,每个"文件名"的"userid"answers"locationid"。最终,这些值将用于确定在页面加载时将向用户显示哪些文件夹和文件。
<?xml version="1.0" encoding="utf-8" ?>
- <files>
<file name="Test 1/Test Pic 2.jpg" source="Test_Pic_2.jpg" size="728573" originalname="Test Pic 2.jpg" thumbnail="Test_Pic_2.jpg" userid="1" locationid="1" description="No description provided" folder="Test_1" />
<file name="Test 1/stags-snow_1544533c.jpg" source="stags-snow_1544533c.jpg" size="21341" originalname="stags-snow_1544533c.jpg" thumbnail="stags-snow_1544533c.jpg" userid="1" locationid="1" description="Deer head." folder="Test_1" />
</files>
我必须承认,我不知道如何获得这些信息,但经过一番搜索,我在网上找到了一个教程,我已经修改并添加到下面。
<?php
if( ! $xml = simplexml_load_file('UploadedFiles/files.xml') )
{
echo 'unable to load XML file';
}
else
{
foreach( $xml as $files )
{
echo 'userid: '.$file_name->userid.'<br />';
echo 'locationid: '.$file_name->locationid.'<br />';
}
}
?>
我遇到的问题是,当我运行这个程序时,我只得到以下结果:
userid:locationid:userid:locationid:userid:locationid:
行数与记录数相对应,但我想要得到的也是字段的值。
我只是想知道是否有人可以看看这个,让我知道我哪里错了。
非常感谢
关于SimpleXML需要记住的四件基本事情:
- 具有属性的图元访问:
$elem->childname
- 带下标的属性访问:
$elem['attribname']
- 带选角的文本内容:
(string) $elem
- 带有
$elem->xpath('')
的xpath
您使用的是元素访问(->userid
),而应该使用下标['userid']
,因为userid是一个属性。
我想您需要这样的东西。(示例位于http://php.net/manual/en/simplexmlelement.attributes.php)
<?php
$string = <<<XML
<a>
<foo name="one" game="lonely">1</foo>
</a>
XML;
$xml = simplexml_load_string($string);
foreach($xml->foo[0]->attributes() as $a => $b) {
echo $a,'="',$b,"'"'n";
}
?>
希望这能有所帮助,如果没有,请回复。
$file_name
在您的脚本中是未定义的,假设这是您的整个PHP脚本。
您可能需要使用$files->userid
和$files->locationid