如何从php中的重复节点名称获取xml字符串中的值并显示它?

时间:2012-11-21 01:00:52

标签: php xml arrays

我有一个xml字符串,看起来像这样,

 <xml>
   <type>name</type>
     <name>
        <namedata>abc</namedata>
        <namedata>efg</namedata>
        <namedata>ijk</namedata>
     </name>
 <xml>

需要量: 我需要将xml解析为php并将其显示在表中,以便它显示为

   type   namedata   namedata   namedata
   name      abc        efg        ijk

我尝试使用foreach执行此操作,但只能获得namedata的第一个值。以下是我到目前为止所做的事情:

  $xml = simplexml_load_string($response);
  echo '<table>';
  echo '<tr><td>type'</td></tr>'.$xml->type.'</td><tr>';
  foreach($xml->name as $row){
     echo'<td>'.$row->namedata.'</td>';
    }
   echo'</tr></table>';

2 个答案:

答案 0 :(得分:0)

因为有多个namdata节点,你可以将它们加载为数组,如下所示:

foreach($xml->name->namedata as $row){
    echo'<td>'.$row.'</td>';
}

至于这个“要求”。我找到的最简单的方法是:

$xml = simplexml_load_string($response);
echo '<table border="1">';
echo '<tr><td>type</td>';
for($x=0;$x<count($xml->name->namedata);$x++){
    echo '<td>namedata</td>';
}
echo '</tr><tr><td>'.$xml->type.'</td>';
foreach($xml->name->namedata as $row){
    echo'<td>'.$row.'</td>';
}
echo'</tr></table>';

答案 1 :(得分:0)

尝试使用它:

$xml = simplexml_load_file($response);
echo '<table>';
echo '<tr><td>type</td></tr>'.$xml->type.'</td></tr>';
  foreach($xml->name->namedata as $row){
     echo '<td>'.$row.'</td>';
  }
  echo '</tr></table>';