2010-01-10 1 views
2

У меня есть корневой узел XML, и я пытаюсь добавить к нему нового ребенка, но я получаю ошибки. Внутри также есть дети. Вот мой код:PHP: создать новый узел внутри родителя

$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); 

Я получаю следующее сообщение об ошибке при выполнении этого:

Фатальная ошибка: Вызов функции члена AppendChild() на не-объект в/главная/сайтов/zed_x/ядра /includes/x.inc on line 88

Кто-нибудь знает, что я делаю неправильно здесь?

+0

Какой из линии 88? –

+0

Было бы неплохо узнать, какая строка в вашем коде равна 88. Так известно, где ошибка проявляется – Veger

+0

Извините, $ xml_assets-> appendChild ($ xml_root); строка 88. –

ответ

2

Как-то ваш $xml_assets не является объектом, и поэтому вы не можете вызвать функцию:

$xml_assets->appendChild($xml_root); 

Вы уверены, уверены, что следующая команда возвращает объект?

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

Попробуй:

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

Это может быть хорошим способом структурировать свой код, так что вы можете поймать ошибки

// .... 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 ..... 
+0

Упс, неверная переменная. –

+0

Да, это объект, я его протестировал. Может быть, $ xml_assets нет? –

+0

Обновлено. Да, это была бы проблема с '$ xml_assets' –

Смежные вопросы