xml 파싱 정보
xml 파싱
본문
게시판을 xml로 파싱해야 하는데요. 뮤존님 팁을 참고하여 했습니다(아래소스 참조)
xml은 생성되는데
<?xml version="1.0" encoding="utf-8" ?><links><wr_id num="27"><url>도메인</url><bo_name>mp3</bo_name><bo_table>mp3</bo_table><wr_subject>
위 처럼 파싱되다가 말아 버립니다
<links>로 시작해서 </links> 끝을 맺어주어야 하는데 말이죠
아래는 뮤존님의 xml 소스입니다
<?
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define("_GNUBOARD_", TRUE);
######################환경변수#########################
$laguage_ = "utf-8"; //xml 생성파일은 utf-8 로 생성되어야 함.
$xml_dir = $g4[path]."/swf/".$write_table; //
$xml_path = $xml_dir."/".$write_table.".xml";
#######################################################
//디렉토리가 존재하지 않는다면 신규생성한다
@mkdir($xml_dir, 0707);
@chmod($xml_dir, 0707);
//파일이 존재하지 않는다면 신규생성한다.
if(!$xml_path){
fwrite($xml_file, "");
fclose($xml_file);
@chmod($xml_path, 0707);
}
$xml_file = fopen($xml_path, "w+")or die("xml file open erro.");
/****************빌더갱신영역***********************/
$rows = 20;
$sql = " select * from $write_table where wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
$result = sql_query($sql);
/*************빌더갱싱*****************************/
$data[lauage] = "<?xml version=\"1.0\" encoding=\"{$laguage_}\" ?>";
$data[xml_start] = "<links>";
$data[xml_end] = "</links>";
$get_xml = "";
//$get_xml .= $data[lauage];
$get_xml .= $data[lauage];
$get_xml .= $data[xml_start];
/*xml 생성*/
while ($list= sql_fetch_array($result)){
$g4['url'] = 'http://' . $_SERVER['HTTP_HOST'];
$get_xml .= "<wr_id num=\"{$list[wr_id]}\">";
$get_xml .= "<url>";
$get_xml .= $g4['url'];
$get_xml .= "</url>";
$get_xml .= "<bo_name>";
$get_xml .= $board[bo_subject];
$get_xml .= "</bo_name>";
$get_xml .= "<bo_table>";
$get_xml .= $bo_table;
$get_xml .= "</bo_table>";
$get_xml .= "<wr_subject>";
$get_xml .= $list[wr_subject];
$get_xml .= "</wr_subject>";
$get_xml .= "<wr_name>";
$get_xml .= $list[wr_name];
$get_xml .= "</wr_name>";
$get_xml .= "<wr_link1>";
$get_xml .= $list[wr_link1];
$get_xml .= "</wr_link1>";
$get_xml .= "</wr_id>";
}
$get_xml .= $data[xml_end];
/****************************xml data end**************************/
//변환
$get_xml = iconv("EUC-KR", "UTF-8",$get_xml);
// write action
if(!fwrite($xml_file, $get_xml)) echo "file wite erro.";
// file close
fclose($xml_file);
?>
xml은 생성되는데
<?xml version="1.0" encoding="utf-8" ?><links><wr_id num="27"><url>도메인</url><bo_name>mp3</bo_name><bo_table>mp3</bo_table><wr_subject>
위 처럼 파싱되다가 말아 버립니다
<links>로 시작해서 </links> 끝을 맺어주어야 하는데 말이죠
아래는 뮤존님의 xml 소스입니다
<?
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define("_GNUBOARD_", TRUE);
######################환경변수#########################
$laguage_ = "utf-8"; //xml 생성파일은 utf-8 로 생성되어야 함.
$xml_dir = $g4[path]."/swf/".$write_table; //
$xml_path = $xml_dir."/".$write_table.".xml";
#######################################################
//디렉토리가 존재하지 않는다면 신규생성한다
@mkdir($xml_dir, 0707);
@chmod($xml_dir, 0707);
//파일이 존재하지 않는다면 신규생성한다.
if(!$xml_path){
fwrite($xml_file, "");
fclose($xml_file);
@chmod($xml_path, 0707);
}
$xml_file = fopen($xml_path, "w+")or die("xml file open erro.");
/****************빌더갱신영역***********************/
$rows = 20;
$sql = " select * from $write_table where wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
$result = sql_query($sql);
/*************빌더갱싱*****************************/
$data[lauage] = "<?xml version=\"1.0\" encoding=\"{$laguage_}\" ?>";
$data[xml_start] = "<links>";
$data[xml_end] = "</links>";
$get_xml = "";
//$get_xml .= $data[lauage];
$get_xml .= $data[lauage];
$get_xml .= $data[xml_start];
/*xml 생성*/
while ($list= sql_fetch_array($result)){
$g4['url'] = 'http://' . $_SERVER['HTTP_HOST'];
$get_xml .= "<wr_id num=\"{$list[wr_id]}\">";
$get_xml .= "<url>";
$get_xml .= $g4['url'];
$get_xml .= "</url>";
$get_xml .= "<bo_name>";
$get_xml .= $board[bo_subject];
$get_xml .= "</bo_name>";
$get_xml .= "<bo_table>";
$get_xml .= $bo_table;
$get_xml .= "</bo_table>";
$get_xml .= "<wr_subject>";
$get_xml .= $list[wr_subject];
$get_xml .= "</wr_subject>";
$get_xml .= "<wr_name>";
$get_xml .= $list[wr_name];
$get_xml .= "</wr_name>";
$get_xml .= "<wr_link1>";
$get_xml .= $list[wr_link1];
$get_xml .= "</wr_link1>";
$get_xml .= "</wr_id>";
}
$get_xml .= $data[xml_end];
/****************************xml data end**************************/
//변환
$get_xml = iconv("EUC-KR", "UTF-8",$get_xml);
// write action
if(!fwrite($xml_file, $get_xml)) echo "file wite erro.";
// file close
fclose($xml_file);
?>
댓글 전체
$list[wr_subject] 를 get_text($list[wr_subject]) 로 해보세요. 그리고 해당 php 파일이 정말로 utf-8 으로 인코딩 되어있는지도 확인 해보세요.
$get_xml = iconv("EUC-KR", "UTF-8",$get_xml); 이걸
$get_xml = iconv("EUC-KR", "EUC-KR",$get_xml); 이렇게 해보세요
$get_xml = iconv("EUC-KR", "EUC-KR",$get_xml); 이렇게 해보세요
<?
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define("_GNUBOARD_", TRUE);
######################환경변수#########################
$laguage_ = "utf-8"; //xml 생성파일은 utf-8 로 생성되어야 함.
$xml_dir = $g4[path]."/swf/".$write_table; //
$xml_path = $xml_dir."/".$write_table.".xml";
#######################################################
//디렉토리가 존재하지 않는다면 신규생성한다
@mkdir($xml_dir, 0707);
@chmod($xml_dir, 0707);
//파일이 존재하지 않는다면 신규생성한다.
if(!$xml_path){
fwrite($xml_file, "");
fclose($xml_file);
@chmod($xml_path, 0707);
}
function escape_xml($str)
{
$str = str_replace('&', '&', $str);
$str = str_replace('<', '<', $str);
$str - str_replace('>', '>', $str);
return $str;
}
$xml_file = fopen($xml_path, "w+") or die("xml file open erro.");
/****************빌더갱신영역***********************/
$rows = 20;
$sql = " select * from $write_table where wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
$result = sql_query($sql);
/*************빌더갱싱*****************************/
$data[lauage] = "<?xml version=\"1.0\" encoding=\"{$laguage_}\" ?>\n";
$data[xml_start] = "<links>\n";
$data[xml_end] = "</links>";
$get_xml = "";
//$get_xml .= $data[lauage];
$get_xml .= $data[lauage];
$get_xml .= $data[xml_start];
/*xml 생성*/
while ($list= sql_fetch_array($result)){
$g4['url'] = 'http://' . $_SERVER['HTTP_HOST'];
$get_xml .= "<wr_id num=\"{$list[wr_id]}\">";
$get_xml .= "<url>";
$get_xml .= escape_xml($g4['url']);
$get_xml .= "</url>";
$get_xml .= "<bo_name>";
$get_xml .= escape_xml($board[bo_subject]);
$get_xml .= "</bo_name>";
$get_xml .= "<bo_table>";
$get_xml .= $bo_table;
$get_xml .= "</bo_table>";
$get_xml .= "<wr_subject>";
$get_xml .= escape_xml($list[wr_subject]);
$get_xml .= "</wr_subject>";
$get_xml .= "<wr_name>";
$get_xml .= escape_xml($list[wr_name]);
$get_xml .= "</wr_name>";
$get_xml .= "<wr_link1>";
$get_xml .= escape_xml($list[wr_link1]);
$get_xml .= "</wr_link1>";
$get_xml .= "</wr_id>\n";
}
$get_xml .= $data[xml_end];
/****************************xml data end**************************/
//변환
//$get_xml = iconv("EUC-KR", "UTF-8",$get_xml);
// write action
if(!fwrite($xml_file, $get_xml)) echo "file wite error.";
// file close
fclose($xml_file);
?>
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
define("_GNUBOARD_", TRUE);
######################환경변수#########################
$laguage_ = "utf-8"; //xml 생성파일은 utf-8 로 생성되어야 함.
$xml_dir = $g4[path]."/swf/".$write_table; //
$xml_path = $xml_dir."/".$write_table.".xml";
#######################################################
//디렉토리가 존재하지 않는다면 신규생성한다
@mkdir($xml_dir, 0707);
@chmod($xml_dir, 0707);
//파일이 존재하지 않는다면 신규생성한다.
if(!$xml_path){
fwrite($xml_file, "");
fclose($xml_file);
@chmod($xml_path, 0707);
}
function escape_xml($str)
{
$str = str_replace('&', '&', $str);
$str = str_replace('<', '<', $str);
$str - str_replace('>', '>', $str);
return $str;
}
$xml_file = fopen($xml_path, "w+") or die("xml file open erro.");
/****************빌더갱신영역***********************/
$rows = 20;
$sql = " select * from $write_table where wr_is_comment = 0 order by wr_id desc limit 0, $rows ";
$result = sql_query($sql);
/*************빌더갱싱*****************************/
$data[lauage] = "<?xml version=\"1.0\" encoding=\"{$laguage_}\" ?>\n";
$data[xml_start] = "<links>\n";
$data[xml_end] = "</links>";
$get_xml = "";
//$get_xml .= $data[lauage];
$get_xml .= $data[lauage];
$get_xml .= $data[xml_start];
/*xml 생성*/
while ($list= sql_fetch_array($result)){
$g4['url'] = 'http://' . $_SERVER['HTTP_HOST'];
$get_xml .= "<wr_id num=\"{$list[wr_id]}\">";
$get_xml .= "<url>";
$get_xml .= escape_xml($g4['url']);
$get_xml .= "</url>";
$get_xml .= "<bo_name>";
$get_xml .= escape_xml($board[bo_subject]);
$get_xml .= "</bo_name>";
$get_xml .= "<bo_table>";
$get_xml .= $bo_table;
$get_xml .= "</bo_table>";
$get_xml .= "<wr_subject>";
$get_xml .= escape_xml($list[wr_subject]);
$get_xml .= "</wr_subject>";
$get_xml .= "<wr_name>";
$get_xml .= escape_xml($list[wr_name]);
$get_xml .= "</wr_name>";
$get_xml .= "<wr_link1>";
$get_xml .= escape_xml($list[wr_link1]);
$get_xml .= "</wr_link1>";
$get_xml .= "</wr_id>\n";
}
$get_xml .= $data[xml_end];
/****************************xml data end**************************/
//변환
//$get_xml = iconv("EUC-KR", "UTF-8",$get_xml);
// write action
if(!fwrite($xml_file, $get_xml)) echo "file wite error.";
// file close
fclose($xml_file);
?>
$xml_file = fopen($xml_path, "w+") or die("xml file open erro.");
로 되어 있는 부분을
$xml_file = fopen($xml_path, "w") or die("xml file open erro.");
로 + 를 뺍니다. while 문을 돌리는데 배열 들어가야 하는데 한번 돌고 끝낼것이 아니라면요
로 되어 있는 부분을
$xml_file = fopen($xml_path, "w") or die("xml file open erro.");
로 + 를 뺍니다. while 문을 돌리는데 배열 들어가야 하는데 한번 돌고 끝낼것이 아니라면요
메신져 쪽지로 보내주세요 .