我有一个调用的根XML节点,我正在尝试添加一个新的子节点,但是我收到了错误。里面还有孩子。这是我的代码:
$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);
运行时出现以下错误:
致命错误:在第88行的/home/websites/zed_x/core/includes/x.inc中的非对象上调用成员函数appendChild()
有谁知道我在这里做错了什么?
答案 0 :(得分: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 .....