如何在SimpleXMLElement对象中获取值

时间:2014-04-14 07:40:10

标签: php xml

Thanx阅读。我有一个 simplexmlElement 对象。我得到了这个结果:

SimpleXMLElement Object ( [item] => Array ( [0] => SimpleXMLElement Object ( [key] => memberCard [value] => memberCard ) [1] => SimpleXMLElement Object ( [key] => AuthToken [value] => Auth-Token ) ) ) 

当我使用此代码时:

$xml=simplexml_load_file('get.xml');
print_r($xml->clientSide[0]->item);

现在我试图获得关键价值,但我不能,我试过了

print_r($xml->clientSide[0]->item[0]->item[0]->key);

但结果是:

SimpleXMLElement Object ( [0] => memberCard )

我不知道如何获取关键节点值。 原始的xml文件是:

<?xml version="1.0" encoding="UTF-8"?>
<xs:mapping xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:IM-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <serverSide xsi:type="IM-ENC:Array"></serverSide>
    <clientSide xsi:type="IM-ENC:Array">
        <item xsi:type="ns2:Map">
            <item>
                <key xsi:type="xs:string">memberCard</key>
                <value xsi:type="xs:string">memberCard</value>
            </item>
            <item>
                <key xsi:type="xs:string">AuthToken</key>
                <value xsi:type="xs:string">Auth-Token</value>
            </item>
        </item>
    </clientSide>
</xs:mapping>

非常感谢任何帮助或想法。

2 个答案:

答案 0 :(得分:1)

您必须明确转换为string

print_r((string)$xml->clientSide[0]->item[0]->item[0]->key);

因此,您调用方法SimpleXMLElement::__toString

答案 1 :(得分:0)

您可以使用foreach循环遍历所有键值对。

foreach ($xml->clientSide->item->item as $k=>$child)
{
    echo $child->key;
    echo "<br>";
    echo $child->value;
    echo "<br><br>";
}

Working Demo