xml 파싱 > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

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);

?>
  • 복사

댓글 전체

<?
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
 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('&', '&amp;', $str);
$str = str_replace('<', '&lt;', $str);
$str - str_replace('>', '&gt;', $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 문을 돌리는데 배열 들어가야 하는데 한번 돌고 끝낼것이 아니라면요
© SIRSOFT
현재 페이지 제일 처음으로