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 ?>