使用PHP解析元素中的xml元素

时间:2011-05-12 23:18:30

标签: php xml

我正在尝试解析具有简单订单表单内容的xml文件。我很擅长解析一个XML文件,其中包含以下内容:

<list>
    <item>
    <id>1</id>
    <quantity>14</quantity>
    </item>

    <item>
    <id>2</id>
    <quantity>3</quantity>
    </item>
</list>

现在我希望能够解析一个结构如此的xml文件。此文件名为“order.xml”以供将来参考。

<main>
<user>
    <address>123 Fake Street, City, STATE, ZIP</address>
    <list>
        <item>
            <id>1</id>
            <quantity>3</quantity>
        </item>
        <item>
            <id>3</id>
            <quantity>4</quantity>
        </item>
    </list>
</user>

<user>
    <address>246 Fake Street, City, STATE, ZIP</address>
    <list>
        <item>
            <id>2</id>
            <quantity>4</quantity>
        </item>
        <item>
            <id>3</id>
            <quantity>4</quantity>
        </item>
    </list>
</user>

</main>

我用来解析文件的PHP代码如下:

<?php
    // load SimpleXML
    $main = new SimpleXMLElement('order.xml', null, true);
    $list = $main;
    print("<table border = '1'>
    <tr>
        <th>Address</th>
        <th>Item_id</th>
        <th>Quantity</th>
    </tr> ");
    foreach($main as $user) // Loops through the users
    {
        print ("<tr>
            <td>{$user->address}</td>");
        foreach($list as $item)
        {
            print ("<td>{$item->id}</td>
        <td>{$item->quantity}</td></tr>");
        }
    }
    echo '</table>';
?>

因此对于输出我希望PHP脚本创建一个类似于以下内容的表,但在HTML表格中正确格式化以便于查看。:

       Address   Item_id    Quantity
      Address 1    2          3
      Address 1    3          4
      Address 2    1          1

非常感谢你!

1 个答案:

答案 0 :(得分:1)

<?php
    // load SimpleXML
    $main = new SimpleXMLElement('order.xml', null, true);
    print("<table border = '1'>
    <tr>
        <th>Address</th>
        <th>Item_id</th>
        <th>Quantity</th>
    </tr> ");
    foreach($main->user as $user) // Loops through the users
    {
        print ("<tr>
            <td>{$user->address}</td>");
        foreach($user->item as $item)
        {
            print ("<td>{$item->id}</td>
        <td>{$item->quantity}</td></tr>");
        }
    }
    echo '</table>';
?>