我想知道是否有人可以帮助我。
我有以下xml文件,我需要从两个文件属性中提取值,更准确地说,每个'文件名'的'userid'和'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 />';
}
}
?>
我遇到的问题是,当我运行这个时,我得到以下结果:
用户ID: locationid: 用户身份: locationid: 用户身份: locationid:
行数与记录数相对应,但我想得的是该字段的值。
我只是想知道是否有人可以看看这个并让我知道我哪里出错了。
非常感谢
答案 0 :(得分:2)
关于SimpleXML需要记住的四个基本事项:
$elem->childname
$elem['attribname']
(string) $elem
$elem->xpath('')
当您使用下标->userid
时,您正在使用元素访问(['userid']
),因为userid是一个属性。
答案 1 :(得分:0)
$file_name
在您的脚本中未定义,假设您拥有的是整个PHP脚本。
您可能需要使用$files->userid
和$files->locationid
答案 2 :(得分:0)
我认为你需要这样的东西。 (在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";
}
?>
希望这会有所帮助,如果没有,请回复。