XML 데이터를 처리 할 때 PHP는 XML_PARSE 및 XML_SET_CHARACTER_DATA_HANDLER가 XML 텍스트 노드를 구문 분석하는 데 중요한 도구 인 강력한 XML 파서 확장 세트를 제공합니다. 이 두 기능은 XML에서 텍스트 내용을 효과적으로 읽고 처리하기 위해 함께 작동합니다. 이 기사는 간단한 예제를 사용하여 XML 데이터를 구문 분석하는 방법을 보여줍니다.
XML_PARSE () 는 XML 데이터를 구문 분석하는 데 사용되는 핵심 기능입니다. 파서 리소스와 XML 문자열을 매개 변수로 수신하고 각 호출 파르즈는 그 일부를 호출합니다.
XML_SET_CHARACTER_DATA_HANDLER ()는 XML에서 텍스트 노드가 발생할 때 트리거 될 콜백 함수를 설정하는 데 사용됩니다. 즉, 태그 간의 모든 일반 텍스트 (CDATA) 컨텐츠는이 기능을 통해 처리됩니다.
예제를 사용 하여이 두 기능을 사용하여 XML에서 텍스트 내용을 추출하는 방법을 보여 드리겠습니다.
<?php
// 1. 준비하다 XML 끈
$xmlData = <<<XML
<books>
<book>
<title>PHP 프로그래밍 연습</title>
<author>장 산</author>
</book>
<book>
<title>심층적 인 이해 XML</title>
<author>Li Si</author>
</book>
</books>
XML;
// 2. 초기화 a XML 파서
$parser = xml_parser_create();
// 3. 추출 된 텍스트 내용을 저장하십시오
$textContents = [];
// 4. 텍스트를 처리하는 콜백 함수를 정의합니다
function handleCharacterData($parser, $data) {
global $textContents;
// 빈 캐릭터를 정리하십시오
$data = trim($data);
if (!empty($data)) {
$textContents[] = $data;
}
}
// 5. 문자 데이터 처리 기능을 설정합니다
xml_set_character_data_handler($parser, "handleCharacterData");
// 6. 분석 XML 데이터
if (!xml_parse($parser, $xmlData, true)) {
die("XML 실수: " . xml_error_string(xml_get_error_code($parser)));
}
// 7. 释放파서资源
xml_parser_free($parser);
// 8. 추출 된 텍스트 내용을 출력하십시오
echo "추출 된 텍스트 내용은 다음과 같습니다:<br>";
foreach ($textContents as $text) {
echo htmlspecialchars($text) . "<br>";
}
?>
위의 PHP 스크립트를 실행 한 후 다음 출력은 다음과 같습니다.
추출 된 텍스트 내용은 다음과 같습니다:
PHP 프로그래밍 연습
장 산
심층적 인 이해 XML
Li Si
이 구문 분석 방법은 특히 작은 XML 데이터를 처리하거나 태그 사이의 텍스트 내용을 추가로 처리하려는 경우에 특히 적합합니다. 예를 들어:
RSS 피드의 크롤링 뉴스 제목 및 콘텐츠;
구문 분석 https://api.m66.net/data.xml 에서 반환 된 사용자 정의 XML 응답;
구성 파일 또는 데이터 파일에서 텍스트를 추출하십시오.
XML_PARSER_CREATE () 로 만든 파서는 사용 후 XML_PARSER_FREE ()를 통해 리소스를 해제해야합니다.
텍스트 콘텐츠 처리 기능은 종종 간섭을 피하기 위해 공백 문자를 필터링해야합니다.
PHP의 XML 파서는 이벤트 중심이며 다른 XML 부품을 처리하기 위해 여러 처리 기능 (예 : XML_SET_ELENMENT_HANDLER )의 등록이 필요합니다.
XML_PARSE 및 XML_SET_CHARACTER_DATA_HANDLER를 결합하면 XML의 텍스트 콘텐츠를 매우 유연하게 처리 할 수 있습니다. 간단한 문자열 추출이든 복잡한 논리 처리이든 적절한 콜백 설계를 통해 달성 할 수 있습니다.
이 기사가 PHP의 XML 구문 분석 방법을 더 잘 이해하는 데 도움이되기를 바랍니다. 데이터를 데이터베이스 또는 웹 페이지 디스플레이와 추가로 결합 해야하는 경우 코드 구조를 계속 확장하여 더 풍부한 애플리케이션 기능을 달성 할 수 있습니다.