2012-07-05 47 views
0

簡單的問題,如何用DOMDocument做到這一點??DOMDocument howto

<backend> 
    <type value="File" /> 
    <cache_dir> 
     <zf:const zf:name="APPLICATION_PATH"/>.cache</cache_dir> 
</backend> 

無需以下結果:

<backend> 
    <type value="File"/> 
    <cache_dir>&lt;zf:const zf:name="APPLICATION_PATH"/&gt;.cache</cache_dir> 
</backend> 

這裏我所做的:

$backendNode = $paramsNode->appendChild($cnfXml->createElement('backend')); 
$backendNode->appendChild($cnfXml->createElement('type'))->setAttribute('value', 'File'); 
$pathnode = $backendNode->appendChild($cnfXml->createElement('cache_dir')); 
$pathnode->appendChild($cnfXml->createElement('zf:const'))->setAttribute('zf:name', 'APPLICATION_PATH'); 
$pathnode->nodeValue .= '.cache'; 
+0

它的工作原理(在標籤保持標籤的意義上),如果你不追加'」 .cache''到'$ pathnode-> nodeValue'? – 2012-07-05 13:30:37

+0

是的,它工作 – kitensei 2012-07-05 13:32:11

回答

0

這個工作對我來說,假設你的命名空間zf是爲Zend框架(和URI是正確)。操作特定名稱空間的節點時,必須使用正確的名稱空間函數。

$backendNode = $paramsNode->appendChild($cnfXml->createElement('backend')); 
$backendNode->appendChild($cnfXml->createElement('type'))->setAttribute('value', 'File'); 
$pathnode = $backendNode->appendChild($cnfXml->createElement('cache_dir')); 
$pathnode->appendChild($cnfXml->createElementNS('http://framework.zend.com/xml/zend-config-xml/1.0/', 'zf:const'))->setAttributeNS('http://framework.zend.com/xml/zend-config-xml/1.0/', 'zf:name', 'APPLICATION_PATH'); 
$pathnode->appendChild($cnfXml->createTextNode('.cache')); 

generated

<backend> 
    <type value="File"/> 
    <cache_dir><zf:const zf:name="APPLICATION_PATH"/>.cache</cache_dir> 
</backend> 
+0

太棒了!沒有追加多個節點> _ < – kitensei 2012-07-05 13:39:14

+0

所以道德是:不要亂用'nodeValue' :-) – 2012-07-05 13:55:26

+0

是的,他們應該爲節點值設置一個getter:o – kitensei 2012-07-05 14:56:09