在PHP中使用XML_parse_to_struct获取XML标记的属性
我有这样一个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> 这会打印类型和值,但不会打印数
<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");
}