728x90
euc-kr 이 포함된 xml 파일을 파싱할때 사용할 수 있는 코드
class xml2Array {
var $arrOutput = array();
var $resParser;
var $strXmlData;
function parse($strInputXML) {
$this----->resParser = xml_parser_create("UTF-8");
//$this->resParser = xml_parser_create ();
//$this->resParser = xml_parser_create("ISO-8859-1");
xml_set_object($this->resParser,$this);
xml_set_element_handler($this->resParser, "tagOpen", "tagClosed");
xml_set_character_data_handler($this->resParser, "tagData");
//xml_parser_set_option($this->resParser, XML_OPTION_TARGET_ENCODING, "ISO-8859-1");
$strInputXML = iconv("UTF-8", "EUC-KR", $strInputXML);
$this->strXmlData = xml_parse($this->resParser, $strInputXML);
if(!$this->strXmlData) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->resParser)),
xml_get_current_line_number($this->resParser)));
}
xml_parser_free($this->resParser);
return $this->arrOutput;
}
function tagOpen($parser, $name, $attrs) {
$tag=array("name"=>$name,"attrs"=>$attrs);
array_push($this->arrOutput,$tag);
}
function tagData($parser, $tagData) {
if(trim($tagData)) {
if(isset($this->arrOutput[count($this->arrOutput)-1]['tagData'])) {
$tagData = iconv("UTF-8", "EUC-KR", $tagData);
$this->arrOutput[count($this->arrOutput)-1]['tagData'] .= $tagData;
}
else {
$tagData = iconv("UTF-8", "EUC-KR", $tagData);
$this->arrOutput[count($this->arrOutput)-1]['tagData'] = $tagData;
}
}
}
function tagClosed($parser, $name) {
$this->arrOutput[count($this->arrOutput)-2]['children'][] = $this->arrOutput[count($this->arrOutput)-1];
array_pop($this->arrOutput);
}
}
$pageurl = "./resultXML.jsp";
//$thecontents = file_get_contents($pageurl);
$buf = file_get_contents($pageurl);
$thecontents = iconv("EUC-KR", "UTF-8", $buf);
$objXML = new xml2Array();
$arrOutput = $objXML->parse($thecontents);
//print_r($arrOutput);
출처 :
'Engineering > PHP' 카테고리의 다른 글
| log4php 를 이용한 로깅 in PHP (0) | 2017.10.26 |
|---|---|
| php 날짜형 포맷 (0) | 2013.02.26 |
| 그누보드 설치시 하얀화면 발생 (0) | 2012.11.16 |
| CentOS 5.6 에서 php 5.3 설치 (0) | 2012.05.15 |
| apm 설치 (0) | 2011.11.14 |