使用PHP中的xml_parse_into_struct获取XML标记的属性

时间:2015-03-05 18:54:36

标签: php xml

我有一个像这样的XML文件:

<site>
    <pages>
        <page number="1">main page</page>
        <page number="2">about</page>
        <page number="3">contacts</page>
    </pages>
</site>

我需要以type : number : value格式打印3个参数。

我的PHP代码如下:

$xml = file_get_contents('file.xml');
$p = xml_parser_create();
xml_parse_into_struct($p, $xml, $vals, $index);
xml_parser_free($p);

foreach ($vals as $val) {
    print(" {$val["type"]} : {$val["number"]} : {$val["value"]}<br><br>\n");
}

这将打印类型和值,但不打印数字。如何打印XML标记的“number”属性?

1 个答案:

答案 0 :(得分:2)

要调试它,您只需将print_r( $val );添加到foreach循环中即可。您会看到attributes中有一个$val数组,其中包含数字。因此,将foreach循环更改为:

foreach ($vals as $val) {
    if ( 'PAGE' !== $val['tag'] ) {
        continue;
    }
  print(" {$val['type']} : {$val['attributes']['NUMBER']} : {$val['value']}<br><br>\n");
}

然后你应该拥有它。虽然,我不确定您是否需要$val['type'],但您可能需要$val['tag']$val['type']可以是openclosedcomplete,它指的是标记正在被解析。 $val['tag']将为SITEPAGESPAGE,其中包含您在帖子中引用的xml位。