SimpleXML PHP - почему функции DOM не работают, проблема с cdata - PullRequest
0 голосов
/ 01 августа 2011

Я пытался всеми возможными способами создать записи cdata в моем XML.Моя последняя попытка заключается в следующем.Я даже не могу пройти для первого утверждения, где я создаю новый DOMDocument.Есть идеи?

<?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";
?>

Ответы [ 2 ]

1 голос
/ 01 августа 2011

Посмотрите на: 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();

Вывод:

<?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>
1 голос
/ 01 августа 2011

Перед объявлением XML не должно быть никаких символов.Удалите разрыв строки в $xml = '.

. Самое лучшее решение - использовать синтаксис 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;
...