Come da topic ho il solito problema con XML e PHP, ma guardando in giro non ho mai trovato una soluzione chiara!

Ora mi spiego:
vorrei scrivere e leggere da un file xml dove ci sono dei campi che sono codice html, la soluzione per scrivere sarebbe fargli scrivere una stringa come questa nel tag che mi interessa <![CDATA[ io sono il testo e anche l'html e qualche altra cosa &%<> ]]>

fin qui tutto ok, il problema sta nel fatto che ovviamente quando utilizzo questo
Codice PHP:
$stringa "<![CDATA[ io sono il testo e anche [b]l'html[/b] e qualche altra cosa &%<> ]]>";
$xml simplexml_load_file($file); 
$news $xml->addChild('articolo'$stringa);
file_put_contents($file$xml->asXML()); 
la $stringa viene parsata e crea errori o viene inserito male, come ovviare a questo problema?

ho provato a cercare su internet, trovando estensioni alla classe come questa
Codice PHP:
class SimpleXMLExtended extends SimpleXMLElement {
  public function addCData($cdata_text) {
    $node= dom_import_simplexml($this);
    $no = $node->ownerDocument;
    $node->appendChild($no->createCDATASection($cdata_text));
  }
}

// come utilizzarlo
$xml = new SimpleXMLExtended('<?xml version "1.0" encoding "UTF-8"?><root></root>');
$mynode = $xml->addChild("myname");
$mynode->addCData("my name contains everything I want &%<>");
echo $xml->asXml();
io utilizzerei anche la classe qui sopra, ma ho problemi ad integrarla.
una funzioncina tipo questa?
Codice PHP:
function InserisciCData($strxml$child$stringa) {
   
$xml = new SimpleXMLExtended($strxml);
   
$mynode $xml->addChild($child);
   
$mynode->addCData($stringa);
   return 
$xml->asXml(); // Ritorna la stringa giusta
}

$stringa "<![CDATA[ io sono il testo e anche [b]l'html[/b] e qualche altra cosa &%<> ]]>";
$xml simplexml_load_file($file); 
$xmlToAddInserisciCData($xml->asXML(), 'articolo'$stringa); // qui dovrei ricollegare quello che ho fatto con l'xml precedente
// A questo punto come faccio ad aggiungere l'xml che mi serve a quello precedente?

file_put_contents($file$xml->asXML());