PHP生成XMLファイル

18896 ワード

 【  】   PHP  XML   4       : 【XML    】 <?xml version="1.0" encoding="utf-8"?>

<article>

    <item>

        <title size="1">title1</title>

        <content>content1</content>

        <pubdate>2009-10-11</pubdate>

    </item>

    <item>

        <title size="1">title2</title>

        <content>content2</content>

        <pubdate>2009-11-11</pubdate>

    </item>

</article> 【       】   1:     PHP       ,            XML      。        XML   ,    ! PHP    : <?PHP $data_array = array( array( 'title' => 'title1',

    'content' => 'content1',

        'pubdate' => '2009-10-11', ),

    array( 'title' => 'title2',

    'content' => 'content2',

    'pubdate' => '2009-11-11', ) ); $title_size = 1; $xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>
"; $xml .= "<article>
"; foreach ($data_array as $data) { $xml .= create_item($data['title'], $title_size, $data['content'], $data['pubdate']); } $xml .= "</article>
"; echo $xml; // XML function create_item($title_data, $title_size, $content_data, $pubdate_data) { $item = "<item>
"; $item .= "<title size=\"" . $title_size . "\">" . $title_data . "</title>
"; $item .= "<content>" . $content_data . "</content>
"; $item .= " <pubdate>" . $pubdate_data . "</pubdate>
"; $item .= "</item>
"; return $item; } ?> 【DomDocument】 2: DomDocument XML createElement , createTextNode , appendChild , createAttribute PHP : <?PHP $data_array = array( array( 'title' => 'title1', 'content' => 'content1', 'pubdate' => '2009-10-11', ), array( 'title' => 'title2', 'content' => 'content2', 'pubdate' => '2009-11-11', ) ); // $attribute_array = array( 'title' => array( 'size' => 1 ) ); // XML XML 。。 $dom=new DomDocument('1.0', 'utf-8'); // $article = $dom->createElement('article'); $dom->appendchild($article); foreach ($data_array as $data) { $item = $dom->createElement('item'); $article->appendchild($item); create_item($dom, $item, $data, $attribute_array); } echo $dom->saveXML(); function create_item($dom, $item, $data, $attribute) { if (is_array($data)) { foreach ($data as $key => $val) { // $$key = $dom->createElement($key); $item->appendchild($$key); // $text = $dom->createTextNode($val); $$key->appendchild($text); if (isset($attribute[$key])) { // foreach ($attribute[$key] as $akey => $row) { // $$akey = $dom->createAttribute($akey); $$key->appendchild($$akey); // $aval = $dom->createTextNode($row); $$akey->appendChild($aval); } } // end if } } // end if } // end function ?> 【XMLWriter】 3: XMLWriter XML PHP 5.1.2 , XML, utf-8 PHP : <?PHP $data_array = array( array( 'title' => 'title1', 'content' => 'content1', 'pubdate' => '2009-10-11', ), array( 'title' => 'title2', 'content' => 'content2', 'pubdate' => '2009-11-11', ) ); // $attribute_array = array( 'title' => array( 'size' => 1 ) ); $xml = new XMLWriter(); $xml->openUri("php://output"); // , xml , $xml->setIndentString(' '); $xml->setIndent(true); $xml->startDocument('1.0', 'utf-8'); // // $xml->startElement('article'); foreach ($data_array as $data) { $xml->startElement('item'); if (is_array($data)) { foreach ($data as $key => $row) { $xml->startElement($key); if (isset($attribute_array[$key]) && is_array($attribute_array[$key])) { foreach ($attribute_array[$key] as $akey => $aval) { // $xml->writeAttribute($akey, $aval); } } $xml->text($row); // $xml->endElement(); // $key } } $xml->endElement(); // item } $xml->endElement(); // article $xml->endDocument(); $xml->flush(); ?> 【SimpleXML】 4: SimpleXML XML <?PHP $data_array = array( array( 'title' => 'title1', 'content' => 'content1', 'pubdate' => '2009-10-11', ), array( 'title' => 'title2', 'content' => 'content2', 'pubdate' => '2009-11-11', ) ); // $attribute_array = array( 'title' => array( 'size' => 1 ) ); $string = <<<XML <?xml version='1.0' encoding='utf-8'?> <article> </article> XML; $xml = simplexml_load_string($string); foreach ($data_array as $data) { $item = $xml->addChild('item'); if (is_array($data)) { foreach ($data as $key => $row) { $node = $item->addChild($key, $row); if (isset($attribute_array[$key]) && is_array($attribute_array[$key])) { foreach ($attribute_array[$key] as $akey => $aval) { // $node->addAttribute($akey, $aval); } } } } } echo $xml->asXML(); ?>