Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.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 simpleXML获取多个XML元素属性_Php_Xml_Simplexml - Fatal编程技术网

如何使用php simpleXML获取多个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

我有这个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 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对象,这可能会产生不良后果。