我的xml中有以下xml代码:
<features>
<pool type="inground">yes</pool>
<heating type="other"/>
</features>
但是,如果我在解析xml后在simplexml上执行了print_r,则池元素设置为字符串而不是作为对象的加热元素。即
[pool] => yes
[heating] => SimpleXMLElement Object
(
[@attributes] => Array
(
[type] => other
)
)
以下代码获取池的类型:
$type = $pool->attributes()->type
未能发出致命错误 - &gt;非对象的成员方法。
这里有什么解决方案?
提前致谢。
答案 0 :(得分:1)
如果您要访问pool
标记的属性,则需要先删除它:
$s = ' <features>
<pool type="inground">yes</pool>
<heating type="other"/>
</features>
';
$pool = simplexml_load_string($s);
var_dump($pool->pool->attributes()->type);
这似乎有效;它为我返回:
object(SimpleXMLElement)#3 (1) {
[0]=>
string(8) "inground"
}
答案 1 :(得分:1)
如果您想使用当前的阅读风格。你必须使用如下
$xmlLoad = file_get_contents($XML_FILE);
$xml = new SimpleXMLElement($xmlLoad);
echo $xml->features->heating->attributes()->type;
答案 2 :(得分:0)
试试这个吗?
foreach ($pool->children() as $child)
{
$type = (string) $child->attributes()->type;
}