Belirli bir niteliğine bir çocuğun değerini bulma

1 Cevap php
<data>
    <gig id="1">
    <date>December 19th</date>
    <venue>The Zanzibar</venue>
    <area>Liverpool</area>
    <telephone>Ticketline.co.uk</telephone>
    <price>£6</price>
    <time>Time TBA</time>
</gig>
<gig id="2">
    <date>Sat. 16th Jan</date>
    <venue>Celtic Connection, Classic Grand</venue>
    <area>Glasgow</area>
    <telephone>0141 353 8000</telephone>
    <price>£17.50</price>
    <time>7pm</time>
</gig>

Ben nasıl bu php kullanarak yapmam verebilecek 2 bir niteliği vardır konser elemanından "tarihi" değerlerini görmek istiyorsa demek?

Temelde ben diyelim ki id 2 silin ve sonra yeniden oluşturmak ya da değiştirmek istiyorum.

nasıl ben sadece belli bir bölümünü silebilirsiniz SimpleXML kullanıyor?

1 Cevap

, Düğümleri bulmak kullanmak için XPath.

$data->xpath('//gig[@id="2"]');

Bu id değer 2'dir. Genellikle, 0 veya 1 elemanı içerecek bir niteliği olmayan tüm <gig/> düğümleri içeren bir dizi döndürür. Siz doğrudan bu değiştirebilirsiniz. Örneğin:

$data = simplexml_load_string(
    '<data>
        <gig id="1">
            <date>December 19th</date>
            <venue>The Zanzibar</venue>
            <area>Liverpool</area>
            <telephone>Ticketline.co.uk</telephone>
            <price>£6</price>
            <time>Time TBA</time>
        </gig>
        <gig id="2">
            <date>Sat. 16th Jan</date>
            <venue>Celtic Connection, Classic Grand</venue>
            <area>Glasgow</area>
            <telephone>0141 353 8000</telephone>
            <price>£17.50</price>
            <time>7pm</time>
        </gig>
    </data>'
);

$nodes = $data->xpath('//gig[@id="2"]');

if (empty($nodes))
{
    // didn't find it
}

$gig = $nodes[0];
$gig->time = '6pm';

die($data->asXML());

Keyfi düğümleri silme daha karmaşık büyüklükte bir sipariş olduğunu, bu yüzden yerine düğümü yeniden / silerek daha değerleri değiştirmek çok daha kolay.