SimpleXML PHP -为什么DOM函数不起作用,cdata麻烦


SimpleXML PHP - Why DOM functions don't work, cdata trouble

我一直在尝试各种可能的方法在我的xml中创建cdata条目。我最近的尝试如下。我甚至不能通过第一个语句,我创建一个新的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";
?>

在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;

看一下: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>