我正在尝试处理用simplexml检索的数据,遇到了很大的困难。我在这里读过很多关于这个主题的文章,它们看起来都像我在做的事情,但我的都不起作用。我得到的是:<ROOT> <ROWS COMP_ID="165462"> <ROWS COMP_ID="165463"></ROOT>我的代码:$xml = simplexml_load_file('10.xml');foreach( $xml->ROWS as $comp_row ) { $id = $comp_row->COMP_ID;}当我在调试器中完成这一步时,我可以看到$id不是被设置为COMPUIDID的字符串值,而是变成一个包含CaseNoNT对象的SimeXMLMeLe元素本身。我已经尝试了许多处理这个属性的变体,但是都没有成功,包括$comp_row->attributes()->comp_id和其他。我错过了什么? 最佳答案 simplexml是一个类似数组的对象。备忘单:未固定的子元素作为数字索引或可遍历不包括前缀元素(注意,我的意思是前缀,不是空命名空间!SimpleXMLElement对名称空间的处理是一个奇怪的问题,可以说是坏的。)第一个孩子:$sxe[0]具有匹配元素子集的新SimpleXMLElement,$sxe->ROWS迭代子项:$sxe->{'ROWS'},foreach ($sxe as $e)文本内容:$sxe->children()。(string) $sxe总是返回另一个SimpleXMLElement,因此如果需要显式转换字符串!前缀子元素:SimpleXMLElement返回带有元素的新$sxe->children('http://example.org')。在匹配的命名空间中,使用命名空间剥离,这样您就可以像前一节那样使用它。作为键索引的空命名空间中的属性:特定属性:`$sxe['attribute-name']所有属性:SimpleXMLElement$sxe->attributes()返回一个特殊的$sxe->attributes(),它将属性同时显示为子元素和属性,因此以下两项都可以工作:属性值:强制为字符串SimpleXMLElement其他命名空间中的属性:所有属性:$sxe->attributes()->COMP_ID特定属性:$a = $sxe->attributes(); $a['COMP_ID'];你想要的是:$xml = '<ROOT><ROWS COMP_ID="165462"/><ROWS COMP_ID="165463"/></ROOT>';$sxe = simplexml_load_string($xml);foreach($sxe->ROWS as $row) { $id = (string) $row['COMP_ID'];}
08-18 17:44