使用PHP从XML创建html表

时间:2013-09-02 02:57:19

标签: php html xml algorithm

我正在尝试使用PHP从xml创建一个html表。 XML看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<Device name="3" alias="THIS">
    <RecCommand name="CLICK">
        <GlobalState name="Light Is Off">
            <Conditions>
                <Device name="3">
                    <State name="LEVEL">
                        <Test name="LT">50</Test>
                    </State>
                </Device>
            </Conditions>
            <Commands>
                <Device name="3">
                    <Command name="ON">
                    </Command>
                </Device>
            </Commands>
        </GlobalState>
        <GlobalState name="Light Is On">
            <Conditions>
                <Device name="3">
                    <State name="LEVEL">
                        <Test name="GTE">50</Test>
                    </State>
                </Device>
            </Conditions>
            <Commands>
                <Device name="3">
                    <Command name="OFF">
                    </Command>
                </Device>
            </Commands>
        </GlobalState>
    </RecCommand>
</Device>

我正在处理的功能:

    function foo($parent) {
    if ($parent->children()->count() > 0) {
            $j = '<tr><td>' . $parent->getName();
            foreach($parent->attributes() as $attrName => $attrValue) {
                $j .= ' ' . $attrName. '=' . $attrValue;
            }
            echo $j;
            echo '</td>';
            echo '</tr>';
        //foreach ($parent->children() as $node) {
            //foo($node);
            foo($parent->children());
        //}
    }
    else {
            $j = $parent->getName();
            foreach($parent->attributes() as $attrName => $attrValue) {
                $j .= ' ' . $attrName. ' : ' . $attrValue;
            }
            $j .= ' ' . $parent;
            echo '<td>';
            echo $j;
            echo '</td>';
    }
    echo '</tr>';
}

echo '<body>';
echo '<table border="1">';
foo($test);
echo '</table>';
echo '</body>';
echo '</html>';

它击中了所有元素并回显了一个简单的表,但我想生成一个反映XML结构的表。我为<tr><td标签尝试了很多不同的设置,但我无法做到正确。我总是得到太多嵌套的行和列,它看起来像一些疯狂的迷宫。

0 个答案:

没有答案