• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • XMLWriter::writeCdata()

    (PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

    Write full CDATA tag

    说明

    面向对象风格
    XMLWriter::writeCdata(string $content): bool
    过程化风格
    xmlwriter_write_cdata(resource $xmlwriter,string $content): bool

    Writes a full CDATA.

    参数

    $xmlwriter

    仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对xmlwriter_open_uri()或xmlwriter_open_memory()的调用。

    $content

    The contents of the CDATA.

    返回值

    成功时返回TRUE,或者在失败时返回FALSE

    参见

    • XMLWriter::startCdata() Create start CDATA tag
    • XMLWriter::endCdata() End current CDATA
    Seen a couple of bug reports and gotchas with this one but not a simple code example. Just in case someone finds it useful:
    <?php
    // serve xml doc as xml
    header('Content-type: application/xml');
    // set up the document
    $xml = new XmlWriter();
    $xml->openMemory();
    $xml->startDocument('1.0', 'UTF-8');
    $xml->startElement('mydoc');
    $xml->startElement('myele');
    // CData output
    $xml->startElement('mycdataelement');
    $xml->writeCData("text for inclusion within CData tags");
    $xml->endElement();
    // end the document and output
    $xml->endElement();
    $xml->endElement();
    echo $xml->outputMemory(true);
    ?>
    Outputs:
    <?xml version="1.0" encoding="UTF-8"?>
    <mydoc>
      <myele>
        <mycdataelement><![CDATA[text for inclusion within CData tags]]>
        </mycdataelement>
      </myele>
    </mydoc>
    i don't know if this is a bug with the underlying c code or not, or this is by design (i'm not a big xml guy), but for me, running on fedora core 5, php 5.2.1
    to get this to work, the cdata functions need to wrap the description (or whatever element the cdata should appear in)
    for example.
    // initiate xmlwriter object as $xw
    // add header, titles, etc.
    // start cdata
    $xw->startCData();
    // start description
    $xw->startElement('description');
    // write cdata
    $xw->writeCData('<img src="http://php.net/images/php.gif" />');
    // write the description contents
    $xw->text('php logo');
    // end the description element
    $xw->endElement();
    // end the cdata
    $xw->endCData();
    // end xml, and output
    otherwise, i just got warnings about writing cdata in the wrong context, and no cdata would be written
    A rather strange effect with this.
    UTF8 Mysql database 
                  $xml->startElement('tablecolor2');
      $xml->writeCData( $tablecolor2 );
      $xml->endElement();
    does not work !
    but 
                  $xml->startElement('tablecolor2');
      $tablecolor2 = utf8_decode ( $val['pcolor2']);
      $xml->writeCData( utf8_encode ($tablecolor2) );
      $xml->endElement();
    cannot explain this - but it may help someone