00001 <?php 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 function kjwresultset_from_raw_xml($raw_xml, $row_tag = 'row') {
00021         require_once(dirname(__FILE__) . '/KjwArrayResultSet.php');
00022         $ret = array();
00023 
00024         $parser = xml_parser_create();
00025         xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
00026         xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
00027         xml_parse_into_struct($parser, $raw_xml, $values, $tags);
00028         xml_parser_free($parser);
00029 
00030         foreach ($tags as $key => $val) {
00031                 if ($key == $row_tag) {
00032                         for ($i = 0; $i < count($val); $i += 2) {
00033                                 $off = $val[$i] + 1;
00034                                 $arr = array_slice($values, $off, $val[$i + 1] - $off);
00035                                 $tmp = array();
00036                                 foreach ($arr as $key2 => $val2) {
00037                                         $tmp[$val2['tag']] = $val2['value'];
00038                                 }
00039                                 array_push($ret, $tmp);
00040                         }
00041                 } else {
00042                         continue;
00043                 }
00044         }
00045         return new KjwArrayResultSet($ret);
00046 }
00047 
00048 function kjwresultset_to_raw_xml(&$result, $row_tag = 'row', $root_tag = 'ROOT') {
00049         $at = $result->at();
00050         $result->seekAbs(0);
00051         $ret = array();
00052         array_push($ret, '<' . $root_tag . '>');
00053         while (($row = $result->getNext())) {
00054                 array_push($ret, '  <' . $row_tag . '>');
00055                 foreach ($row as $key => $val) {
00056                         array_push($ret, '    <' . $key . '>' . htmlentities($val, ENT_COMPAT, 'UTF-8') . '</' . $key . '>');
00057                 }
00058                 array_push($ret, '  </' . $row_tag . '>');
00059         }
00060         array_push($ret, '</' . $root_tag . '>');
00061         $result->seekAbs($at);
00062         return implode("\n", $ret);
00063 }
00064 
00065 function kjwresultset_from_csv($csv_without_head, $delimiter = ',') {
00066         preg_match();
00067 }
00068 
00069 function kjwresultset_from_csv_with_head($csv, $delimiter = ',') {
00070         if (($resultset = kjwresultset_from_csv($csv, $delimiter)) === null)
00071                 return null;
00072         if (($head = $resultset->getNext()) === false) {
00073                 $resultset->destroy();
00074                 return null;
00075         }
00076         $ret = array();
00077         while (($row = $result->getNext())) {
00078                 foreach ($head as $value) {
00079                         $ret[$value] = array_shift($row);
00080                 }
00081         }
00082         return new KjwArrayResultSet($ret);
00083 }
00084 
00085 function kjwresultset_to_csv(&$result, $delimiter = ',', $with_head = false) {
00086         $at = $result->at();
00087         $result->seekAbs(0);
00088         $ret = array();
00089         
00090         if (($row = $result->getNext()) === false)
00091                 return '';
00092         if ($with_head) {
00093                 $columns = array();
00094                 foreach (array_keys($row) as $value) {
00095                         if (strpos($value, $delimiter) === false && strpos($value, '"') === false)
00096                                 array_push($columns, $value);
00097                         else
00098                                 array_push($columns, '"' . str_replace('"', '""', $value) . '"');
00099                 }
00100                 array_push($ret, $columns);
00101         }
00102         
00103         do {
00104                 $columns = array();
00105                 foreach ($row as $value) {
00106                         if (strpos($value, $delimiter) === false && strpos($value, '"') === false)
00107                                 array_push($columns, $value);
00108                         else
00109                                 array_push($columns, '"' . str_replace('"', '""', $value) . '"');
00110                 }
00111                 array_push($ret, $columns);
00112         } while (($row = $result->getNext()));
00113         
00114         $result->seekAbs($at);
00115         return implode("\n", $ret);
00116 }
00117 
00118 function kjwresultset_to_csv_with_head(&$result, $delimiter = ',') {
00119         return kjwresultset_to_csv($result, $delimiter, true);
00120 }
00121 
00122 ?>