0

我一直在使用 PHP 的简单 XML 函数来处理 XML 文件。

以下代码适用于简单的 XML 层次结构:

$xml = simplexml_load_file("test.xml");

echo $xml->getName() . "<br />";

foreach($xml->children() as $child)
{
    echo $child->getName() . ": " . $child . "<br />";
}

这假设 XML 文档的结构如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

但是,如果我的 XML 文档中有更复杂的结构 - 内容根本不会输出。一个更复杂的 XML 示例如下所示:

<note>
    <noteproperties>
        <notetype>
            TEST
        </notetype>
    </noteproperties>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Don't forget me this weekend!</body>
</note>

我需要处理深度不确定的 XML 文件 - 任何人都可以建议一种方法吗?

4

1 回答 1

1

那是因为你需要再往下走<noteproperties>

看看这个,来自SimpleXMLElement::children的例子:

$xml = new SimpleXMLElement(
'<person>
     <child role="son">
         <child role="daughter"/>
     </child>
     <child role="daughter">
         <child role="son">
             <child role="son"/>
         </child>
     </child>
 </person>');

foreach ($xml->children() as $second_gen) {
    echo ' The person begot a ' . $second_gen['role'];

    foreach ($second_gen->children() as $third_gen) {
        echo ' who begot a ' . $third_gen['role'] . ';';

        foreach ($third_gen->children() as $fourth_gen) {
            echo ' and that ' . $third_gen['role'] .
                ' begot a ' . $fourth_gen['role'];
        }
    }
}
于 2012-04-27T13:47:17.300 回答