[Codeigniter-users] XMLの生成について xml_from_result v2.0.3

Back to archive index

戸田 広 info****@sciss*****
2012年 1月 14日 (土) 00:39:01 JST


こんばんは、戸田です。

> 結果は、以下の様に、改行がされず、タグも付きません。
> 1 リンゴ 秋 バラ科 2012-01-11 01:14:52 2 ウンシュウミカン 冬 ミカン科 2012-01-11 01:14:52 3 ブドウ 秋 ブドウ科 2012-01-

出力結果のXMLは何で確認されていますか? Webブラウザーでしょうか?
手元のCI 2.0.3環境でコードを転記して試してみましたが、
返ってきた結果はXML形式になっています。

最後のXML出力を、echo文ではなく、
たとえば次のようにMIMEタイプがXMLであることを
明示して出力した場合はどのような結果になりますでしょうか?

	$this->output->set_content_type('xml');
	$this->output->set_output($this->dbutil->xml_from_result($query, $config));


以上です。



On 2012/01/13, at 18:37, yfa76550 wrote:

> 栗田です。
> 色々探したり、試行錯誤してみましたが、どうしても出来ません。
> どなたかアドバイス頂けませんか?
> この場で、こういう質問がまずければ、適当なサイトをお教え下さい。
> 
> ===
> 
> ”徹底”の本にあるサンプル①(chapter 11 - dbutil2.php)をそのままインポートしたのですが、
> 結果は、以下の様に、改行がされず、タグも付きません。
> 1 リンゴ 秋 バラ科 2012-01-11 01:14:52 2 ウンシュウミカン 冬 ミカン科 2012-01-11 01:14:52 3 ブドウ 秋 ブドウ科 2012-01-
> 
> その前のサンプル(chapter 11 - dbutil1.php) csv_from_result の結果は以下の様にOKなので、
> 基本的な所は問題ないのかと思います。
> (但し、v1,6やv1.7では、csvも改行されず1行表記、タグはつきますが。。)
> "id","name","season","family","modified",
> "1","リンゴ","秋","バラ科","2012-01-11 01:14:52",
> "2","ウンシュウミカン","冬","ミカン科","2012-01-11 01:14:52",
> 
> ①サンプルの写しです。CI_付加
> <?php
> /*
> * データベースユーティリティクラス 利用例2
> * XMLの生成
> */
> 
> class Dbutil2 extends CI_Controller {
> 
> 	function index()
> 	{
> 		// データベースユーティリティクラスのロード
> 		$this->load->dbutil();
> 
> 		// 検索
> 		$query = $this->db->query("SELECT * FROM fruits");
> 
> 		// XMLの設定
> 		$config = array (
>                  'root'    => 'root',
>                  'element' => 'element',
>                  'newline' => "\n",
>                  'tab'     => "\t"
>                );
> 
> 		// XMLの出力
> 		echo $this->dbutil->xml_from_result($query, $config);
> 	}
> 
> }
> ?>
> 
> ②ダウンロードした system\database\DB_utility.php の写しです。
> xml_from_result のところの抜粋
> 
> 	/**
> 	 * Generate XML data from a query result object
> 	 *
> 	 * @access	public
> 	 * @param	object	The query result object
> 	 * @param	array	Any preferences
> 	 * @return	string
> 	 */
> 	function xml_from_result($query, $params = array())
> 	{
> 		if ( ! is_object($query) OR ! method_exists($query, 'list_fields'))
> 		{
> 			show_error('You must submit a valid result object');
> 		}
> 
> 		// Set our default values
> 		foreach (array('root' => 'root', 'element' => 'element', 'newline' => "\n", 'tab' => "\t") as $key => 
> $val)
> 		{
> 			if ( ! isset($params[$key]))
> 			{
> 				$params[$key] = $val;
> 			}
> 		}
> 
> 		// Create variables for convenience
> 		extract($params);
> 
> 		// Load the xml helper
> 		$CI =& get_instance();
> 		$CI->load->helper('xml');
> 
> 		// Generate the result
> 		$xml = "<{$root}>".$newline;
> 		foreach ($query->result_array() as $row)
> 		{
> 			$xml .= $tab."<{$element}>".$newline;
> 
> 			foreach ($row as $key => $val)
> 			{
> 				$xml .= $tab.$tab."<{$key}>".xml_convert($val)."</{$key}>".$newline;
> 			}
> 			$xml .= $tab."</{$element}>".$newline;
> 		}
> 		$xml .= "</$root>".$newline;
> 
> 		return $xml;
> 	}
> 
> ちなみに、codeIgniterを使わずに、PEARの”XML/Serializer.php”で、別のスクリプトでやると、XMLが生成出来ますが、
> PEARをcodeIgniterにインポートして実行すると、改行・タグなし、となります。
> PEARの他の関数(Spreadsheet_Excel_Writer)はOKなので、これも何か微妙な所が原因かと。
> 
> 長文ですみません。
> 宜しくお願い致します。
> 
> _______________________________________________
> Codeigniter-users mailing list
> Codei****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users

-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
Download 



Codeigniter-users メーリングリストの案内
Back to archive index