我如何格式化XML?

时间:2016-01-18 22:37:47

标签: php html xml

我已经研究了如何在PHP中使用JSS Casper API,并以XML格式接收响应。在浏览器中,它只是在一行上没有任何空格的情况下格式化所有内容。以下是XML的示例:

<accounts>
  <users>
    <user>
      <id>1</id>
      <name>administrator</name>
    </user>
  </users>
  <groups>
    <group>
      <id>2</id>
      <name>Example Group</name>
      <site>
        <id>-1</id>
        <name>None</name>
      </site>
    </group>
  </groups>
</accounts>

如何将其格式化为HTML表格或更漂亮的东西?有一种简单的转换方法吗?

这是我尝试过的代码:

<?php
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "https://example.jamfcloud.com/JSSResource/accounts");
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($curl, CURLOPT_USERPWD, "user:pass");
    $result = curl_exec($curl);
    curl_close($curl);

    $arr = simplexml_load_string_($curl);
    $xml = $arr->member;
?>
<table>
    <tr>
        <th>User</th>
        <th>ID</th>
        <th>Name</th>
    </tr>
    <?php foreach($xml as $row) { ?>
        <tr>
            <td><?php echo $row->user ?></td>
            <td><?php echo $row->id ?></td>
            <td><?php echo $row->name ?></td>
        </tr>
    <?php } ?>
</table>

1 个答案:

答案 0 :(得分:1)

您正在呼叫simplexml_load_string错误:

$arr = simplexml_load_string_($curl);

实际应该是:

$arr = simplexml_load_string($result);


删除

$xml = $arr->member;

因为您只需将foreach循环替换为:

<?php foreach($arr->users->user as $row) { ?>

请参阅this answer