/ / SimpleXML PHP - Dlaczego funkcje DOM nie działają, problemy z cdata - php, simplexml, cdata

SimpleXML PHP - Dlaczego funkcje DOM nie działają, problem z cdata - php, simplexml, cdata

Próbowałem wszystkich możliwych sposobów tworzeniawpisy cdata w moim xml. Moja ostatnia próba jest następująca. Nie mogę przejść obojętnie za pierwsze stwierdzenie, w którym tworzę nowy DOMDocument. Jakieś pomysły?

<?php
$xml = "
<?xml version="1.0" encoding="ISO-8859-1"?>
<cars>
<make name="Ford">
<model>Mustang</model>
</make>
<make name="Honda">
<model>Accord</model>
</make>
</cars>
";

$dom = new DOMDocument;

$dom->loadXML($xml);


$xml = simplexml_import_dom($dom);
print "working";
?>

Odpowiedzi:

1 dla odpowiedzi № 1

Nie powinieneś mieć żadnych znaków przed deklaracją XML. Usuń podział linii w $xml = ".

Najlepszym rozwiązaniem byłoby użycie składni heredoc:

$xml = <<<XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<cars>
<make name="Ford">
<model>Mustang</model>
</make>
<make name="Honda">
<model>Accord</model>
</make>
</cars>
XML;

1 dla odpowiedzi nr 2

Spójrz na: DOMDocument :: createCDATASection

$xml = "<?xml version="1.0" encoding="ISO-8859-1"?>
<cars>
<make name="Ford">
<model>Mustang</model>
</make>
<make name="Honda">
<model>Accord</model>
</make>
</cars>
";

$dom = new DOMDocument;
$dom->loadXML($xml);

$cdataNode = $dom->createCDATASection("<&>");
$dom->documentElement->appendChild($cdataNode);

echo $dom->saveXml();

Wydajność:

<?xml version="1.0" encoding="ISO-8859-1"?>
<cars>
<make name="Ford">
<model>Mustang</model>
</make>
<make name="Honda">
<model>Accord</model>
</make>
<![CDATA[<&>]]></cars>