如何使用php simpleXML获取多个XML元素属性
我有这个XML如何使用php simpleXML获取多个XML元素属性,php,xml,simplexml,Php,Xml,Simplexml,我有这个XML <STOREITEMS> <CREATED value="Tue Oct 9 5:30:01 BST 2012"> <CATEGORY id="442" name="Hen And Stag Nights"></CATEGORY> <CATEGORY id="69" name="Games"></CATEGORY> <CATEGORY id="252" name="Love
<STOREITEMS>
<CREATED value="Tue Oct 9 5:30:01 BST 2012">
<CATEGORY id="442" name="Hen And Stag Nights"></CATEGORY>
<CATEGORY id="69" name="Games"></CATEGORY>
<CATEGORY id="252" name="Love Zone"></CATEGORY>
<CATEGORY id="202" name="Spotlight Items"></CATEGORY>
</CREATED>
</STOREITEMS>
但是,这将返回致命错误:对非对象调用成员函数attributes()
有什么想法吗?
谢谢。类别节点嵌套在
创建的
节点中,因此您需要在那里访问它,访问类别['name']->attributes()
没有任何意义,因为这将试图访问第一个类别
节点的名称
属性上不存在的属性
因此,是否要检索所有CATEGORY
节点或所有CATEGORY
节点的名称属性值,或者仅检索那些具有name
属性的CATEGORY
节点的名称属性值
所有类别节点:
foreach($xml->CREATED->CATEGORY as $category)
{
echo $category['name'] . '<br />';
}
只有具有名称属性的类别
节点:
foreach($xml->xpath('//CATEGORY[@name]') as $category)
{
echo $category['name'] . '<br />';
}
foreach($xml->xpath('//CATEGORY[@name]')作为$CATEGORY)
{
echo$category['name']。
;
}
类别
节点嵌套在创建的节点中,因此您需要在那里访问它,访问类别['name']->attributes()
没有任何意义,因为这将试图访问第一个类别
节点的名称
属性上不存在的属性
因此,是否要检索所有CATEGORY
节点或所有CATEGORY
节点的名称属性值,或者仅检索那些具有name
属性的CATEGORY
节点的名称属性值
所有类别节点:
foreach($xml->CREATED->CATEGORY as $category)
{
echo $category['name'] . '<br />';
}
只有具有名称属性的类别
节点:
foreach($xml->xpath('//CATEGORY[@name]') as $category)
{
echo $category['name'] . '<br />';
}
foreach($xml->xpath('//CATEGORY[@name]')作为$CATEGORY)
{
echo$category['name']。
;
}
完美!非常感谢你!我正在寻找所有类别节点的代码,您的解释帮助我理解了它的工作方式。值得补充的一点是,如果执行任何操作而不是回显您的结果,请记住在遍历XML后强制转换为字符串(例如,$my_CATEGORY_list[]=(string)$CATEGORY['name'];
)否则,您将传递SimpleXML对象,这可能会产生不良后果。太好了!非常感谢你!我正在寻找所有类别节点的代码,您的解释帮助我理解了它的工作方式。值得补充的一点是,如果执行任何操作而不是回显您的结果,请记住在遍历XML后强制转换为字符串(例如,$my_CATEGORY_list[]=(string)$CATEGORY['name'];
)否则,您将传递SimpleXML对象,这可能会产生不良后果。