>  기사  >  백엔드 개발  >  PHP에서 XML을 배열로 변환하는 방법

PHP에서 XML을 배열로 변환하는 방법

PHPz
PHPz원래의
2023-04-24 10:52:402630검색

PHP로 프로그래밍하는 과정에서 XML 파일이 자주 사용되지만 모든 개발자가 XML 파일의 구문 규칙에 익숙하지 않으므로 XML 파일을 배열로 변환하여 처리해야 합니다. PHP를 사용하여 XML 파일을 배열로 변환하는 방법은 다음과 같습니다.

1. SimpleXML 확장 기능 사용

SimpleXML 확장 기능은 PHP와 함께 제공되는 XML 구문 분석 확장 기능으로, XML 파일을 객체로 구문 분석한 다음 객체를 배열로 변환할 수 있습니다.

SimpleXML 확장 기능을 사용하는 단계는 다음과 같습니다.

  1. simplexml_load_file() 함수를 사용하여 XML 파일을 로드합니다. 샘플 코드는 다음과 같습니다.
$xml = simplexml_load_file('example.xml');
  1. SimpleXML 개체를 배열로 변환합니다. 샘플 코드는 다음과 같습니다.
$array = json_decode(json_encode($xml), TRUE);

그 중 json_decode () 함수는 JSON 형식의 문자열을 PHP 배열로 변환하는 함수입니다. json_encode() 함수는 PHP 배열을 JSON 형식 문자열로 직렬화합니다. 여기서는 SimpleXML 개체를 JSON 형식 문자열로 직렬화한 다음 이를 PHP 배열로 구문 분석합니다.

  1. 변환된 배열을 처리하고 비즈니스 로직을 구현합니다.

2. DOMDocument 클래스 사용

DOMDocument는 PHP와 함께 제공되는 DOM 구문 분석 확장 프로그램으로, XML 파일을 트리 구조로 구문 분석한 다음 처리에 필요한 노드를 찾을 수 있습니다.

DOMDocument 클래스를 사용하는 단계는 다음과 같습니다.

  1. load() 메서드를 사용하여 XML 파일을 로드합니다. 샘플 코드는 다음과 같습니다.
$dom = new DOMDocument();
$dom->load('example.xml');
  1. 샘플 코드는 다음과 같습니다.
$root = $dom->documentElement;
  1. 루트 노드 하위 노드 아래의 각 항목을 탐색하고 노드의 이름과 값을 배열로 변환합니다.

샘플 코드는 다음과 같습니다.

$array = array();
if ($root->hasChildNodes()) {
    $children = $root->childNodes;
    for ($i = 0; $i < $children->length; $i++) {
        $child = $children->item($i);
        $array[$child->nodeName] = $child->nodeValue;
    }
}

위 코드에서는 먼저 빈 배열을 만든 다음 루트 노드 아래의 각 하위 노드를 반복합니다. 하위 노드가 비어 있지 않으면 해당 이름과 값을 배열에 저장합니다.

  1. 변환된 배열을 처리하고 비즈니스 로직을 구현합니다.

3. XML Parser 클래스 사용

XML Parser는 PHP와 함께 제공되는 XML 파서로, XML 파일을 이벤트 스트림으로 구문 분석한 다음 이벤트 유형에 따라 XML 파일을 처리할 수 있습니다.

XML 파서를 사용하는 단계는 다음과 같습니다.

  1. XML 파서 개체를 생성합니다. 샘플 코드는 다음과 같습니다.
$xml_parser = xml_parser_create();
  1. 이벤트 핸들러 기능을 설정합니다. 샘플 코드는 다음과 같습니다.
function startElement($parser, $element_name, $element_attrs) {
    //处理元素开始事件
}

function endElement($parser, $element_name) {
    //处理元素结束事件
}

function charData($parser, $data) {
    //处理文本内容事件
}

xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "charData");

위 코드에서는 세 가지 처리 함수를 정의합니다. startElement()는 요소 시작 이벤트를 처리하는 데 사용되고, endElement()는 요소 종료 이벤트를 처리하는 데 사용되며, charData()는 텍스트 콘텐츠 이벤트를 처리하는 데 사용됩니다. 그런 다음 이 세 가지 처리 기능을 XML 파서에 등록합니다.

  1. XML 파일을 구문 분석하는 샘플 코드는 다음과 같습니다.
$fp = fopen('example.xml', 'r');
while ($data = fread($fp, 4096)) {
    xml_parse($xml_parser, $data, feof($fp));
}

위 코드에서는 먼저 XML 파일을 바이너리 모드로 메모리로 읽은 다음 점차적으로 데이터 청크를 XML 구문 분석기에 전달하여 구문 분석합니다.

  1. 변환된 배열을 처리하고 비즈니스 로직을 구현합니다.

요약:

위는 XML 파일을 배열로 변환하는 세 가지 방법입니다. 개발자는 실제 필요에 따라 적절한 방법을 선택할 수 있습니다. SimpleXML 확장 기능과 DOMDocument 클래스를 사용하는 과정에서 PHP는 많은 양의 메모리와 CPU 리소스를 차지하는 반면, XML Parser 클래스를 사용하면 메모리와 CPU 리소스를 절약할 수 있지만 더 많은 처리 기능을 작성해야 합니다.

위 내용은 PHP에서 XML을 배열로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.