현재 위치: > 최신 기사 목록> PHP에서 XML_PARSE 및 PDO를 사용하여 데이터베이스에서 XML 데이터를 구문 분석하는 방법은 무엇입니까?

PHP에서 XML_PARSE 및 PDO를 사용하여 데이터베이스에서 XML 데이터를 구문 분석하는 방법은 무엇입니까?

M66 2025-04-26

최신 웹 애플리케이션에서 다양한 데이터 형식으로 인해 개발자가 종종 XML 데이터를 처리해야합니다. XML 데이터가 데이터베이스에 저장된 경우 PHP의 XML_PARSE 기능 및 PDO 데이터베이스 작업을 사용하여 자동 구문 분석 및 처리를 달성 할 수 있습니다. 이 기사는이 프로세스를 자세히 소개하고 실행 가능한 코드 예제를 포함합니다.

1 단계 : 데이터베이스에서 XML 데이터를 준비합니다

XML_DATA 라는 테이블이있는 MySQL 데이터베이스가 있다고 가정하고 구조는 다음과 같습니다.

 CREATE TABLE xml_data (
    id INT AUTO_INCREMENT PRIMARY KEY,
    xml_content TEXT NOT NULL
);

예를 들어 XML 데이터를 삽입하겠습니다.

 INSERT INTO xml_data (xml_content) VALUES 
('<book><title>PHP 프로그래밍 연습</title><author>장 산</author><url>https://m66.net/books/php</url></book>');

2 단계 : PDO를 사용하여 데이터베이스에서 XML 데이터를 읽습니다.

 <?php
$dsn = 'mysql:host=localhost;dbname=test_db;charset=utf8mb4';
$username = 'db_user';
$password = 'db_pass';

try {
    $pdo = new PDO($dsn, $username, $password);
    
    $stmt = $pdo->query("SELECT xml_content FROM xml_data");
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $xml = $row['xml_content'];
        parseXmlWithHandler($xml);
    }

} catch (PDOException $e) {
    echo "데이터베이스 연결이 실패했습니다: " . $e->getMessage();
}
?>

3 단계 : XML_PARSE를 사용하여 XML 데이터를 구문 분석하십시오

PHP의 XML_PARSE 는 이벤트 중심 파서입니다. 사용하기 전에 구문 분석 기능과 프로세서를 정의해야합니다.

 function parseXmlWithHandler($xmlString) {
    $parser = xml_parser_create();

    xml_set_element_handler($parser, "startElement", "endElement");
    xml_set_character_data_handler($parser, "characterData");

    if (!xml_parse($parser, $xmlString, true)) {
        echo "XML 구문 분석 오류: " . xml_error_string(xml_get_error_code($parser));
        return;
    }

    xml_parser_free($parser);
}

function startElement($parser, $name, $attrs) {
    echo "<b>태그 시작:</b> $name<br>";
}

function endElement($parser, $name) {
    echo "<b>엔드 태그:</b> $name<br>";
}

function characterData($parser, $data) {
    $trimmed = trim($data);
    if ($trimmed !== '') {
        echo "<b>콘텐츠:</b> $trimmed<br>";
    }
}

4 단계 : 출력 샘플 결과

위의 스크립트를 실행 한 후 출력은 다음과 유사합니다.

 태그 시작:BOOK
태그 시작:TITLE
콘텐츠:PHP 프로그래밍 연습
엔드 태그:TITLE
태그 시작:AUTHOR
콘텐츠:장 산
엔드 태그:AUTHOR
태그 시작:URL
콘텐츠:https://m66.net/books/php
엔드 태그:URL
엔드 태그:BOOK