PHP SimpleXML抓取属性

PHP SimpleXML抓取属性,php,simplexml,Php,Simplexml,我使用SimpleXML并希望获得每个不同的learner及其子rater属性,如何将其解析为一个单独的属性,如: Learner: John Rater_1_name: John Rater_1_email: john@domain.com Rater_1_group: Self Rater_2_name: Jane Rater_2_email: jane@domain.com Rater_2_group: Manager Rater_3_name: Nathan Rater_3_ema

我使用SimpleXML并希望获得每个不同的
learner
及其子
rater
属性,如何将其解析为一个单独的属性,如:

Learner: John

Rater_1_name: John
Rater_1_email: john@domain.com
Rater_1_group: Self

Rater_2_name: Jane
Rater_2_email: jane@domain.com
Rater_2_group: Manager

Rater_3_name: Nathan
Rater_3_email: nathan@domain.com
Rater_3_group: Peers

// and so on...
要分析的代码:

$xml = '
<users>
    <learner name="John">
        <rater name="John" email="john@domain.com" group="Self"></rater>
        <rater name="Jane" email="jane@domain.com" group="Manager"></rater>
        <rater name="Nathan" email="nathan@domain.com" group="Peers"></rater>
    </learner>
    <learner name="Jane">
        <rater name="Jane" email="jane@domain.com" group="Self"></rater>
        <rater name="John" email="john@domain.com" group="Peers"></rater>
        <rater name="Nathan" email="nathan@domain.com" group="Others"></rater>
    </learner>
</users>
';

$sxe = new SimpleXMLElement($xml);
echo $sxe->asXML();
$xml='1!'
';
$sxe=新的simplexmlement($xml);
echo$sxe->asXML();

谢谢。

在实现接口时,您可以访问foreach()循环中的元素。因此,应该从以下几方面着手:-

$xml = '
<users>
    <learner name="John">
        <rater name="John" email="john@domain.com" group="Self"></rater>
        <rater name="Jane" email="jane@domain.com" group="Manager"></rater>
        <rater name="Nathan" email="nathan@domain.com" group="Peers"></rater>
    </learner>
    <learner name="Jane">
        <rater name="Jane" email="jane@domain.com" group="Self"></rater>
        <rater name="John" email="john@domain.com" group="Peers"></rater>
        <rater name="Nathan" email="nathan@domain.com" group="Others"></rater>
    </learner>
</users>
';

$sxe = simplexml_load_string($xml);

foreach($sxe as $learner){
    $attr = $learner->attributes();
    $name = $attr['name'];
    echo "Learner $name <br/>Rated by:-<br/>\n";
    foreach($learner->rater as $rater){
        foreach($rater->attributes() as $key => $value){
            echo " - $key = $value <br/>\n";
        }
    }
}