2012-03-14 112 views
0

我想知道是否有人可以帮助我。用PHP提取XML元素

我有以下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 />'; 
     } 
    } 

?> 

我遇到的问题是,当我运行这个,我只是得到下面的结果:

用户名: locationid: 用户ID: locationid: 用户ID: locationid:

行数对应的记录数,但我想获得的也是该字段的值。

我只是想知道是否有人可以看看这个,让我知道我要去哪里错了。

非常感谢

回答

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"; 
} 
?> 

希望这有助于如果没有请回来后。

+0

非常感谢您花时间帮助我解决这个问题。我在一定程度上理解了这个例子。但考虑到我需要更深入的实现,我可能需要添加一个新帖子,因为我认为我需要做的比我原先想象的要复杂得多。亲切的问候 – IRHM 2012-03-14 15:42:35

+0

没问题。如果您有问题,请随时给我发电子邮件。 – 2012-03-14 16:16:08

+0

你真好。非常感谢。 – IRHM 2012-03-14 18:31:03

0

$file_name在脚本假设这是你拥有了整个PHP脚本是不明确的。

您可能需要使用$files->userid$files->locationid

+0

嗨,非常感谢。不幸的是,我已经尝试了这一点,并得到了相同的结果。亲切的问候 – IRHM 2012-03-14 15:06:52

1

四个基本的东西要记住的SimpleXML:

  1. 与性能的元素访问:$elem['attribname']
  2. 文本内容与铸造:(string) $elem
  3. 的XPath与$elem->xpath('')
  4. 与下标 $elem->childname
  5. 属性的访问

当您使用['userid']的下标时,您正在使用元素访问(->userid),因为userid是属性。