Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用XML_parse_to_struct获取XML标记的属性_Php_Xml - Fatal编程技术网

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

在PHP中使用XML_parse_to_struct获取XML标记的属性,php,xml,Php,Xml,我有这样一个XML文件: <site> <pages> <page number="1">main page</page> <page number="2">about</page> <page number="3">contacts</page> </pages> </site> 这会打印类型和值,但不会打印数

我有这样一个XML文件:

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

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

要调试它,只需添加
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");
}
foreach($val作为$val){
如果('PAGE'!=$val['tag'])){
继续;
}
打印({$val['type']}:{$val['attributes']['NUMBER']}:{$val['value']}

\n”); }

然后你应该拥有它。虽然我不确定您是否想要
$val['type']
,但您可能想要
$val['tag']
$val['type']
将是
打开的
关闭的
,或
完成的
,它将标记引用为正在解析的标记
$val['tag']
将是
站点
页面
,或
页面
,带有您在文章中引用的xml位。

不要使用此API,此处仅用于向后兼容。使用三种格式中的一种:DOM、XMLReader或SimpleXML。@AlexisKing,谢谢格式化@嗯,我明白了,谢谢。尝试SimpleXML,如下所示:
$xml\u str=file\u get\u contents('file.xml')$xml=新的simplexmlement($xml_str)$pages=$xml->xpath('*/page');foreach($pages as$page){echo$page['number'],':',$page['value'],“\n”}
现在打印属性'number',但值不是。。。此处需要更改什么?
$page['value']
表示属性
。只需将
$page
转换为文本内容的字符串。@ThW,正在工作。非常感谢。是,{$val['attributes']['NUMBER']}获取属性。(顺便说一句,我一直在尝试{$val['attributes']['number']},但大写字母在这里很重要!)谢谢!
foreach ($vals as $val) {
    if ( 'PAGE' !== $val['tag'] ) {
        continue;
    }
  print(" {$val['type']} : {$val['attributes']['NUMBER']} : {$val['value']}<br><br>\n");
}