SimpleXML的问题

时间:2011-08-03 05:10:03

标签: php xml simplexml

我的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;非对象的成员方法。

这里有什么解决方案?

提前致谢。

3 个答案:

答案 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;
}