PHP: ebeveyn içinde yeni düğümü oluşturur

1 Cevap php

Ben denilen bir kök XML düğümü var ve ben bu denilen yeni bir çocuk eklemek çalışıyorum ama hata alıyorum. İçinde çocuklar da var. İşte benim kod:

    $xml = new DomDocument();
    $xml->load(X_ASSETS);
    $xml->formatOutput = true;
    $new_id = $this->getNewAssetId();
    // Root
    $xpath = new DOMXPath($xml);
    $assets = $xpath->query('assets');
    $xml_assets = $assets->item(0);
    $xml_root = $xml->createElement('asset');
    // Asset Name
    $xml_name = $xml->createElement('name');
    $xml_name->nodeValue = $clean_name;
    $xml_root->appendChild($xml_name);
    // Asset URL
    $xml_url = $xml->createElement('url');
    $xml_url->nodeValue = '/'.$name;
    $xml_root->appendChild($xml_url);
    // Asset ID
    $xml_id = $xml->createElement('id');
    $xml_id->nodeValue = $new_id;
    $xml_root->appendChild($xml_id);


    // Create our document and save
    $xml_assets->appendChild($xml_root);
    $xml->save(X_ASSETS);

Bu çalıştırırken aşağıdaki hatayı alıyorum:

Ölümcül hata: satır 88 / home / web / zed_x / çekirdek / includes / x.inc olmayan bir nesne üzerinde bir üye işlev appendChild () Çağrı

Herkes burada yanlış ne yapıyorum biliyor mu?

1 Cevap

Her nasılsa senin $xml_assets bir nesne değildir, ve bu nedenle işlev çağrısı olamaz:

$xml_assets->appendChild($xml_root);

Eğer aşağıdaki komut bir nesneyi döndüren pozitif emin misiniz?

$xml_assets = $assets->item(0);

Test edin:

if(is_object($xml_assets))
{
    echo "Object Here!";
}

Hataları yakalamak böylece bu kod yapısı için iyi bir yol olabilir

// .... stuff .....
$xml_assets = $assets->item(0);

// ... more stuff ....

// Check for Object
if(!is_object($xml_assests))
{
     die("No Object Created!");
}

$xml_assets->appendChild($xml_root);
$xml->save(X_ASSETS);

// .... more stuff .....