2012-08-11 19 views
2

我正在編輯一個XML文件THA我現在的儲蓄THA後的特定節點的文件,但它包含了一些特殊的charachter因爲行號7我的代碼如何通過特殊charachters到XML文件

$xml = simplexml_load_file('demo.xml'); 
$i=2; 

foreach($xml->Page as $myPage){ 
if($myPage['id']==$i) { 
    $da = "data"; 
    $text = "helloworld"; 
    $myPage->$da ="<![CDATA[{$text}]]>"; //line numnber 
    $xml->asXML('demo.xml'); 
} 

我怎麼能把字符串,因爲它是在XML文件

回答

1

SimpleXML不處理CDATA非常好。如果你想寫CDATA,你需要使用DOM對象。例如:

$xml = new DOMDocument(); 
$xml->load('demo.xml'); 
$i = 2; 

foreach ($xml->getElementsByTagName('Page') as $page) { 
    if ($page->attributes->getNamedItem('id')->value == $i) { 
     $da = 'data'; 
     $text = 'helloworld'; 

     $data = $xml->createElement($da); 
     $data->appendChild($xml->createCDATASection($text)); 

     $page->appendChild($data); 
    } 
} 

如果你想繼續使用SimpleXML的,你可以加載只是你想要寫的CDATA元素成一個DOM對象。

$xml = simplexml_load_file('demo.xml'); 
$i = 2; 

foreach ($xml->Page as $page) { 
    if ($page['id'] == $i) { 
     $da = 'data'; 
     $text = 'helloworld'; 
     $page->$da = ''; 

     $node = dom_import_simplexml($page->$da); 
     $dom = $node->ownerDocument; 
     $node->appendChild($dom->createCDATASection($text)); 
    } 
} 

$xml->asXML('demo.xml'); 
+0

已回答您的問題嗎?如果確實如此,請將其標記爲已接受的答案。 – JamesArmes 2012-09-19 10:25:00

+0

不,我申請,但沒有工作,這就是爲什麼我不接受 – sandeepKumar 2012-09-25 07:25:21

+0

@skumar你能提供一些見解什麼是行不通的?如果你可以提供更多的細節,也許我可以清理我的答案來解決你的問題。 – JamesArmes 2012-09-25 13:31:57