2012-12-02 32 views
2

我在我的PHP腳本如下代碼:如何在保存XML文件時解碼HTML實體?

$str = '<item></item>'; 
$xml = new DOMDocument('1.0', 'UTF-8'); 
$xml->formatOutput = true; 
$xml->load('file.xml'); 
$items = $addon->getElementsByTagName('items')->item(0); 
$items->nodeValue = $str; 
$xml->save('file.xml'); 

在保存file.xml我看到以下內容:

&lt;item&gt;&lt;\item&gt; 

我怎樣才能把它保存在XML文件中沒有編碼的HTML實體?

+0

如果'$ str'應該是一個文本值,那是完全正確的,它*需要*被轉義。您是否真的想*將新的''元素添加到XML文件中? – deceze

+0

檢查http://stackoverflow.com/questions/12330571/php-htmlentities-and-saving-the-data-in-xml-format和http://php.net/manual/en/function.htmlentities.php# 106535 –

+0

感謝您的提示。其實這並不能幫助我,我在我的XML是:,我想改變這樣的:項目,在$ STR我項目,我想之間插入,這就是我使用nodeValue的原因 – user1870041

回答

1

使用DOMDocumentFragment:

<?php 

$doc = new DOMDocument(); 
$doc->load('file.xml'); // '<doc><items/></doc>' 

$item = $doc->createDocumentFragment(); 
$item->appendXML('<item id="1">item</item>'); 

$doc->getElementsByTagName('items')->item(0)->appendChild($item); 
$doc->save('file.xml'); 

如果你要追加到根元素,使用$doc->documentElement->appendChild($item);代替getElementsByTagName