최신 웹 애플리케이션 개발에서 XML (확장 가능한 마크 업 언어)은 데이터 교환 형식 중 하나이며 여전히 많은 시나리오에서 널리 사용됩니다. PHP는 XML을 처리하기위한 다양한 기능 라이브러리를 제공하며, 그 중 XML_PARSE 및 DOMXML은 각각 다른 요구에 적합한 두 가지 일반적인 구문 분석 방법입니다. 이 기사는이 두 가지 방법을 개별적으로 소개하고 XML 데이터의 구문 분석 기술을 효율적으로 마스터하는 데 도움이되는 실용적인 코드 예제를 제공합니다.
XML_PARSE 는 PHP의 XML 파서 함수이며 이벤트 기반 구문 분석 방법 (색소폰 파싱이라고도 함)에 속합니다. XML 데이터를 읽는 과정에서 특정 콜백 기능을 트리거합니다. 이는 전체 문서를 메모리에로드 할 필요가 없기 때문에 큰 XML 파일을 처리하는 데 적합합니다.
<?php
$xml_data = <<<XML
<books>
<book>
<title>PHP 프로그래밍 연습</title>
<author>장 산</author>
</book>
<book>
<title>XML 그리고 Web 제공하다</title>
<author>Li Si</author>
</book>
</books>
XML;
$parser = xml_parser_create("UTF-8");
function startElement($parser, $name, $attrs) {
echo "시작 요소:$name\n";
}
function endElement($parser, $name) {
echo "결말 요소:$name\n";
}
function characterData($parser, $data) {
$data = trim($data);
if (!empty($data)) {
echo "데이터:$data\n";
}
}
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "characterData");
if (!xml_parse($parser, $xml_data, true)) {
die("XML 구문 분석 오류:" . xml_error_string(xml_get_error_code($parser)));
}
xml_parser_free($parser);
?>
시작 요소:BOOKS
시작 요소:BOOK
시작 요소:TITLE
데이터:PHP 프로그래밍 연습
결말 요소:TITLE
시작 요소:AUTHOR
데이터:장 산
결말 요소:AUTHOR
결말 요소:BOOK
시작 요소:BOOK
시작 요소:TITLE
데이터:XML 그리고 Web 제공하다
결말 요소:TITLE
시작 요소:AUTHOR
데이터:Li Si
결말 요소:AUTHOR
결말 요소:BOOK
결말 요소:BOOKS
장점 : 빠른 파싱 속도와 메모리 사용량이 낮습니다.
적용 가능한 시나리오 : 대형 XML 파일, XML 컨텐츠를 수정하지 않고만 읽어야합니다.
DOMXML은 전체 XML 문서를 DOM 트리에로드하여 HTML DOM과 같은 XML 데이터를 조작 할 수있는보다 구조화 된 XML 처리 방법을 제공합니다.
참고 : PHP5이므로 DOMXML은 DOM 확장 (즉, DOMDocument 클래스)으로 대체 되었으며이 기사는 후자의 예를 채택합니다.
<?php
$xml_string = <<<XML
<books>
<book>
<title>PHP 프로그래밍 연습</title>
<author>장 산</author>
<link>https://www.m66.net/book/php</link>
</book>
<book>
<title>XML 그리고 Web 제공하다</title>
<author>Li Si</author>
<link>https://www.m66.net/book/xml</link>
</book>
</books>
XML;
$doc = new DOMDocument();
$doc->loadXML($xml_string);
$books = $doc->getElementsByTagName("book");
foreach ($books as $book) {
$title = $book->getElementsByTagName("title")->item(0)->nodeValue;
$author = $book->getElementsByTagName("author")->item(0)->nodeValue;
$link = $book->getElementsByTagName("link")->item(0)->nodeValue;
echo "책 제목:$title\n";
echo "작가:$author\n";
echo "링크:$link\n\n";
}
?>
책 제목:PHP 프로그래밍 연습
작가:장 산
링크:https://www.m66.net/book/php
책 제목:XML 그리고 Web 제공하다
작가:Li Si
링크:https://www.m66.net/book/xml
장점 : 명확한 구조 및 작동하기 쉬우 며 XML을 읽고, 수정 및 생성하기에 적합합니다.
해당 시나리오 : 중소형 XML 파일, 구조 수정 또는 새 문서를 작성해야합니다.