0

我有一个 simpleXML 输出:

SimpleXMLElement Object
(
    [@attributes] => Array
    (
        [version] => 2
    )
    [currentTime] => 2013-02-05 21:26:09
    [result] => SimpleXMLElement Object
    (
        [rowset] => SimpleXMLElement Object
        (
            [@attributes] => Array
            (
                [name] => characters
                [key] => characterID
                [columns] => name,characterID,corporationName,corporationID
            )
            [row] => Array
            (
                [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                    (
                        [name] => Wrytha Cy
                        [characterID] => 209668693
                        [corporationName] => Deep Core Mining Inc.
                        [corporationID] => 1000006
                    )
                )
                [1] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                    (
                        [name] => Eve Mae
                        [characterID] => 624980803
                        [corporationName] => Viziam
                        [corporationID] => 1000066
                    )
                )
                [2] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                    (
                        [name] => Wrytha
                        [characterID] => 709227913
                        [corporationName] => The Flying Tigers
                        [corporationID] => 669350666
                    )
                )
            )
        )
    )
    [cachedUntil] => 2013-02-05 21:35:04
)

我想循环使用我的 php 循环并获取“name”和“characterID”。我正在尝试类似的东西:

    $simpleXML = simplexml_load_string($xml); 

    foreach ($simpleXML->result->rowset->row as $row) {
        print_r($row);
        $name = $row['@attributes']['name'];
        echo $name.'<br>';
    }

但 $name 没有被设置。这将是一些简单的事情,只是在我第一次使用 simpleXML 时没有看到它。

4

1 回答 1

0

使用语法访问属性$element['attribute_name'],因此在您的情况下,您需要$row['name'].

重要的是要记住 SimpleXML 对象是一种魔法 -和$element->child语法重载了正常的 PHP 逻辑以使其有用。同样,将为您提供元素的完整文本内容,但它在实际 XML 中被分解。$element_list[0]$element['foo'](string)$element

因此,print_r输出不会为您提供对象的“真实”视图,因此应谨慎使用。我在这里编写了几个替代调试函数,它们可以更准确地了解对象的行为方式。

于 2013-02-07T13:18:50.193 回答