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


Get attribute of XML tag using xml_parse_into_struct in PHP

我有一个XML文件,如下所示:

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

我需要打印3个参数,格式为type : number : value

我的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标记的"数字"属性?

要调试它,只需将print_r( $val );添加到foreach循环中即可。您将看到,在$val中有一个attributes数组,其中包含数字。因此,将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位。