【问题标题】:SimpleXML PHP - Why DOM functions don't work, cdata troubleSimpleXML PHP - 为什么 DOM 函数不起作用,cdata 麻烦
【发布时间】:2011-08-01 14:46:53
【问题描述】:

我一直在尝试所有可能的方法来在我的 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";
?>

【问题讨论】:

    标签: php simplexml cdata


    【解决方案1】:

    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;
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-13
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-26
        相关资源
        最近更新 更多