|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /home/queenjbs/www/test/xml/ |
Upload File : |
<?php
/*
* xml_parser_create xml문서를 파싱하기 위해 파서를 생성 인자로 사용할 문장인코딩 기본인코딩 ISO-8859-1
* 그외 US-ASCII, UTF-8 파서를 생성하지 못하면 false반환!
*/
$createXML = xml_parser_create() or die ("XML 파서를 생성하지 못했습니다.");
/*
* xml_set_element_handler 시작태그와 마침태그에 대한 핸들러
* 시작태그를 만났을때 두번째인자에 정의된 함수 실행
* 마침태그를 만났을때 세번재인자에 정의된 함수 실행
*/
xml_set_element_handler($createXML, "StartTag", "EndTag");
/*
* xml_parser_set_option 파싱할대 적용할 옵선 지정
* xml태그에 속성을 처리할때 옵선을 지정하지 않을 경우 속성=값 을 자동으로
* 대문자로 치환한다.
* 아래와 같이 XML_OPTION_CASE_FOLDING false를 지정
*/
xml_parser_set_option($createXML, XML_OPTION_CASE_FOLDING, false);
/*
* xml_set_character_data_handler 는 시작태그와 마침태그 사이에 데이타 핸들러
*/
xml_set_character_data_handler($createXML, "Data");
/* 파일을 모두 읽기 */
#$xml = implode("", file("ch.xml"));
/*
* xml_parse xml문자 파싱 세번째 인자는 파일을 한번에 읽었기 때문에 true
* 만약 한줄씩 읽어 들인다면 세번째 인자를 false를 하고 마지막 줄을 읽을때 true
*/
#if(!xml_parse($createXML, $xml, true))
#{
# die ("XML 파싱 중 에러가 발생하였습니다.");
#}
/* 파일을 가져오기 */
$file = fopen("address.xml", "r") or die ("xml파일 열기 에러!!");
/* 파일을 한줄씩 읽기 */
while($data = fgets($file))
{
/*
* feof() 함수는 파일끝에 도달하였을때 true를 반환하고 그렇지 않을때 false를 반환한다.
* xml_parse 에 세번째 인자는 마지막 줄을 읽을때 true를 그렇지 않을때 false를
* 설정해 줘야 하기때문에 feof() 함수를 사용하면 된다.
*/
if(!xml_parse($createXML, $data, feof($file)))
{
/*
* xml_get_current_line_number 현재 파싱하고 있는 줄을 반환
* xml_get_current_column_number 현재 파싱하고 있는 줄의 위치 반환
* xml_error_string 에러코드에 해당하는 에러메세지반환
* xml_get_error_code 에러코드 반환
*/
die ("에러 위치 :".xml_get_current_line_number($createXML)." 번째줄, "
.xml_get_current_column_number($createXML)." 번째 위치<br/>
에러메세지 : ".xml_error_string(xml_get_error_code($createXML)));
}
}
/* 생성된 파서 해제 */
xml_parser_free($createXML);
?>