PHP 에서 XML 문서로 데이터 출력을 하는 방법에 대해 알아보자.
XML 문서 만들기의 규칙
- 모든 XML 문서들은 정확한 형식을 갖추어야 한다.
- 모든 태그들은 쌍(시작태그, 종료태그)을 이루어야 한다.
SimpleXML Parser 와 XML expat Parser이다.
XML expat Parser 는 event 기반 parser 이다. (http://www.w3schools.com/php/php_xml_parser_expat.asp)
XML expat Parser 는 XML 파일 데이터가 많은 경우에 효과적이다.
XML Expat Parser functions 의 구성요소는 3개의 이벤트로 구성되어 있다고 볼 수 있다.
- Start element: from
- Start CDATA section, value: Jani
- Close element: from
// 1. DB 접속 경로 지정하여 DB를 읽어들인다.
// 2. 읽어들일 XML 파일의 경로를 지정한다. $readFile
// 3. 읽어들일 파일이 XML 파일인지 여부를 검사한다.
// 4. 초기 변수를 선언한다.
// 5. XML parser 를 생성하고 읽어들인 XML 파일을 파싱처리하여 DB에 저장한다.
$parser=xml_parser_create(); // XML parser 생성
// element handler 등록, start/stop 은 함수명
xml_set_element_handler($parser,"start","stop");
// data handler 등록, char 는 함수명
xml_set_character_data_handler($parser,"char");
//Open XML file
$fp=fopen($readFile,"r");
//Read data
while (!feof($fp)) { // 파일의 마지막까지
$data = fgets($fp); // 파일을 한줄씩 읽어들인다.
xml_parse($parser,$data,feof($fp)) or
die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)),
xml_get_current_line_number($parser)));
}
//Free the XML parser
xml_parser_free($parser);
//Function to use at the start of an element
function start($parser,$element_name,$element_attrs) {
global $parsedata;
$parsedata = "";
}
//Function to use at the end of an element
function stop($parser,$element_name) {
switch($element_name) {
case "user_id":
$user_id = $parsedata
break;
case "user_email":
$user_email = $parsedata
break;
case "content":
$content = $parsedata
break;
case "item":
// <item> </item> 으로 하나의 자료가 끝나는 시점이므로 parse data 를 DB에 저장 처리
// DB 저장시 key 값 기준으로 데이터 중복체크하여 insert, update 처리
break;
}
}
//Function to use when finding character data
function char($parser,$data) {
global $parsedata;
$parsedata = $data;
}
?>
'Web 프로그램 > JSON, 파싱 다루기' 카테고리의 다른 글
Parse JSON with PHP (JSON 파싱) (2) | 2017.11.27 |
---|---|
PHP Array 활용 JSON (0) | 2017.05.11 |
[PHP] MySQL Data to JSON using PHP (0) | 2016.12.22 |
[PHP Parsing] Snoopy로 로또번호 추출하기 (0) | 2016.08.01 |
XML 데이터 생성 처리 (0) | 2016.06.06 |