PHP에는 XML 데이터를 처리하는 방법에는 여러 가지가 있으며 그중 XML_PARSE () 및 SIMPLEXML_LOAD_STRING () 가 가장 일반적인 두 가지 방법입니다. 이 두 가지 모두 구문 분석 XML을 구현할 수 있지만, 사용법, 기본 메커니즘, 유연성 등의 상당한 차이가 있습니다.이 기사는 기본 사용, 유사성 및 차이점, 각각의 장점 및 단점의 세 가지 측면에서이를 분석합니다.
XML_PARSE () 는 PHP가 제공하는 기본 XML 파서 중 하나이며, SAX (Sax) 모델을 기반으로 구문 분석됩니다. 파서가 시작 태그, 엔드 태그 및 문자 데이터를 만나면 사전에 정의한 콜백 함수를 호출합니다.
샘플 코드 :
function startElement($parser, $name, $attrs) {
echo "태그 시작: $name\n";
}
function endElement($parser, $name) {
echo "엔드 태그: $name\n";
}
function characterData($parser, $data) {
echo "콘텐츠: " . trim($data) . "\n";
}
$xmlData = <<<XML
<note>
<to>User</to>
<from>Admin</from>
<message>방문에 오신 것을 환영합니다 http://m66.net</message>
</note>
XML;
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
if (!xml_parse($parser, $xmlData, true)) {
die("XML 구문 분석 오류: " . xml_error_string(xml_get_error_code($parser)));
}
xml_parser_free($parser);
대조적으로, Simplexml_load_string () 은 DOM 기반 구문 분석 방법입니다. 전체 XML 문서를 객체에 구문 분석하고 개발자는 배열 또는 객체 속성에 액세스하는 것처럼 XML 노드에 액세스 할 수 있으므로 사용하기에 더 직관적입니다.
샘플 코드 :
$xmlData = <<<XML
<note>
<to>User</to>
<from>Admin</from>
<message>방문에 오신 것을 환영합니다 http://m66.net</message>
</note>
XML;
$xml = simplexml_load_string($xmlData);
echo "받는 사람: " . $xml->to . "\n";
echo "보내는 사람: " . $xml->from . "\n";
echo "정보: " . $xml->message . "\n";
특성 | xml_parse () | simplexml_load_string () |
---|---|---|
분석 방법 | 이벤트 중심 (색소폰) | 객체 기반 (dom) |
메모리 사용 | 덜 (큰 문서에 적합) | 더 많은 (전체 XML이 메모리에로드 됨) |
사용 편의성 | 더 복잡한 사용자 정의 콜백 기능이 필요합니다 | 배열/객체 액세스와 유사하며 단순하고 직관적입니다 |
확장 성 | 유연하지만 복잡합니다 | 간단하지만 제한된 확장 성 |
오류 처리 | 수동 판단 오류 | 더 나은 내장 처리 |
지원되는 PHP 버전 | PHP 4 이상 | PHP 5 이상 |
이점:
메모리가 적고 큰 XML 파일을 구문 분석하는 데 적합합니다.
보다 근본적이고 유연하여 XML 컨텐츠를 잘 제어 할 수 있습니다.
RSS 스트림 또는 로그 파일과 같은 스트리밍 데이터 처리에 더 적합합니다.
결점:
인코딩은 복잡하며 여러 콜백 함수의 정의가 필요합니다.
초보자에게 친숙하지 않고 가독성이 좋지 않습니다.
낮은 개발 효율과 어려운 디버깅.
이점:
사용하기 간단하고 명확한 구문 및 신속하게 개발하기 쉽습니다.
데이터 추출 기능을 향상시키기 위해 XPath 쿼리를 지원합니다.
중소형 XML 파일 및 잘 구조화 된 데이터에 적합합니다.
결점:
전체 문서를 구문 분석하면 많은 메모리가 필요합니다.
뛰어난 XML 구조에 대한 약한 결함 허용.
초대형 또는 동적 스트리밍 XML 데이터를 처리하는 데 적합하지 않습니다.
큰 XML 파일을 처리하거나 데이터를 라인별로 처리 해야하는 경우 XML_PARSE ()를 사용하는 것이 좋습니다.
XML 데이터 구조가 단순하고 데이터 볼륨이 크지 않으면 SimpleXml_load_string ()을 사용하면 개발 효율성을 크게 향상시킬 수 있습니다.