Özelliklerine göre bir düğüm (ve çocukları) almak için SimpleXML kullanma

2 Cevap php

SimpleXML kullanarak, ebeveynin niteliklerine dayanarak bir düğümün çocukları almak mümkündür. Örneğin, ben myItem1 içinde değişik bir listesini almak istiyorum (çıkış küçük olacağını, büyük)

İşte sonra ben ne bazı pseudo kodu:

foreach($xml->xpath('//family[@name="myItem1"]')->variants->children() as $child) {
    $child->getName()
}

(Tabii ki bu işe yaramazsa, ama umarım ben yapmaya çalışıyorum açıklar.)

Örnek XML:

<library>
 <family name="myItem1">
   <variants>
    <small>
     ...
    </small>
    <large>
     ...
    </large>    
   </variants>
 </family>
 <family name="myItem2">
   <variants>
    <small>
     ...
    </small>
    <medium>
     ...
    </medium>   
   </variants>
 </family>
</library>

Teşekkür ederim.

2 Cevap

Eğer doğru anlamak, belirli bir düğümün tüm çocukların isimlerini almak istiyorum. Bunu yapmak için çeşitli yol vardır, bunlardan biri bu gibi tüm çocuklar, üzerinde yineleme için:

foreach ($xml->xpath('//family[@name="myItem1"]') as $family)
{
    $variants = array();
    foreach ($family->variants->children() as $name => $node)
    {
        $variants[] = $name;
    }

    // in case there are duplicates you can do
    $variants = array_unique($variants);

    var_dump($variants);
}

Aşağıdaki XPath ifadesini deneyin:

//family[@name="myItem1"]/variants/*