PHP, SimpleXML, dekodowanie obiektów w CDATA

Mam następujące zachowanie:

$xml_string1 = "<person><name><![CDATA[ Someone&#039;s Name ]]></name></person>";
$xml_string2 = "<person><name> Someone&#039;s Name </name></person>";

$person = new SimpleXMLElement($xml_string1);
print (string) $person->name; # Someone&#039;s Name

$person = new SimpleXMLElement($xml_string2);
print (string) $person->name; # Someone's Name

$person = new SimpleXMLElement($xml_string1, LIBXML_NOCDATA);
print (string) $person->name; # Someone&#039;s Name

Dokumenty php mówią, że NOCDATA „Scala [s] CDATA jako węzły tekstowe”. Dla mnie oznacza to, że CDATA będzie wtedy traktowane tak samo jak węzły tekstowe - lub że zachowanie trzeciego przykładu będzie teraz takie samo jak drugi przykład.

Nie mam kontroli nad XML (jest to kanał ze źródła zewnętrznego), w przeciwnym razie usunęłbym tag CDATA, ponieważ nic nie robi i nie niszczy pożądanego zachowania.

Dlaczego powyższy przykład zachowuje się tak, jak wygląda? Czy jest jakiś sposób, aby SimpleXML obsługiwał węzły CDATA w taki sam sposób, w jaki obsługuje węzły tekstowe? Co właściwie robi „Merge CDATA jako węzły tekstowe”, ponieważ wydaje mi się, że nie rozumiem tej opcji?

Obecnie dekoduję po wyciągnięciu danych, ale powyższy przykład nadal nie ma dla mnie sensu.

questionAnswers(1)

yourAnswerToTheQuestion