使用foreach()解析XML子项

时间:2010-04-25 02:25:59

标签: php xml foreach

我有一个需要在PHP中解析的XML文件。我当前正在使用simplexml_load_file来加载文件,如下所示:

$xml = simplexml_load_file('Project.xml');

在XML文件中有一个这样的结构:

<?xml version="1.0" encoding="ISO-8859-1"?>
<project>
<name>Project 1</name>
<features>
    <feature>Feature 1</feature>
    <feature>Feature 2</feature>
    <feature>Feature 3</feature>
    <feature>Feature 4</feature>
</features>
</project>

我要做的是在<name>内打印<feature>内容以及每个<features>元素。我不知道如何做到这一点,因为有超过1个名为<feature>的元素。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:10)

打印文本,试试这个:

foreach($xml->features->feature as $key => $value)
{
    echo $value;
}

答案 1 :(得分:1)

simplexml_load_file()返回一个对象。

使用var_dump($ xml)查看结构:

object(SimpleXMLElement)#1 (2) {
  ["name"]=>
  string(9) "Project 1"
  ["features"]=>
  object(SimpleXMLElement)#2 (1) {
    ["feature"]=>
    array(4) {
      [0]=>
      string(9) "Feature 1"
      [1]=>
      string(9) "Feature 2"
      [2]=>
      string(9) "Feature 3"
      [3]=>
      string(9) "Feature 4"
    }
  }
}

所以这样的代码:

<?PHP
$xml = simplexml_load_file('test.xml');
echo $xml->name . "\n";
foreach($xml->features->feature as $f){
  echo "\t$f\n";
}

将产生如下输出:

Project 1
    Feature 1
    Feature 2
    Feature 3
    Feature 4

我认为你或多或少都在追求这一点。

答案 2 :(得分:0)

你可以这样做:

foreach($xml->features->feature as $f) {
    echo $f."\n";
}