>  기사  >  백엔드 개발  >  PHP가 XML을 구문 분석하는 여러 가지 방법

PHP가 XML을 구문 분석하는 여러 가지 방법

(*-*)浩
(*-*)浩원래의
2019-09-12 15:36:433245검색

php는 Xml 파서, SimpleXML, XMLReader 및 DOMDocument를 포함하여 xml을 구문 분석하기 위한 여러 클래스 또는 메서드를 제공합니다.

PHP가 XML을 구문 분석하는 여러 가지 방법

XML Expat 파서:

XML 파서는 Expat XML 파서를 사용합니다. Expat는 XML 문서를 일련의 이벤트로 처리하는 이벤트 기반 파서입니다. 이벤트가 발생하면 지정된 함수를 호출하여 이를 처리합니다. Expat는 문서에 연결된 모든 DTD를 무시하는 검증이 필요 없는 파서입니다. (추천 학습: PHP 프로그래밍 초보부터 숙달까지)

단, 문서의 형식이 좋지 않으면 오류 메시지로 종료됩니다. 이벤트 기반이고 유효성 검사가 없기 때문에 Expat는 빠르고 웹 애플리케이션에 적합합니다.

XML Parser의 장점은 XML 문서 전체를 메모리에 올려서 처리하는 것이 아니라 파싱하면서 처리하기 때문에 성능이 좋다는 것입니다. 그러나 바로 이 때문에 XML 구조를 동적으로 조정하거나 XML 컨텍스트 구조를 기반으로 복잡한 작업을 수행해야 하는 사용자에게는 적합하지 않습니다.

잘 구성된 XML 문서를 구문 분석하고 처리하려는 경우 작업을 잘 완료할 수 있습니다. XML Parser는 US-ASCII, ISO-8859-1 및 UTF-8의 세 가지 인코딩 형식만 지원합니다. XML 데이터가 다른 인코딩으로 되어 있는 경우 먼저 위 세 가지 중 하나로 변환해야 합니다.

XML Parser에는 일반적으로 일반적으로 사용되는 두 가지 구문 분석 방법(실제로는 두 가지 기능)이 있습니다: xml_parse_into_struct 및 xml_set_element_handler.

xml_parse_into_struct

이 메서드는 xml 데이터를 두 개의 배열로 구문 분석합니다.

index 배열 - 값 배열의 값 위치에 대한 포인터를 포함합니다.

value 배열 - 구문 분석된 XML의 데이터를 포함합니다.

SimpleXML

SimpleXML은 PHP5 이후에 제공되는 간단하고 사용하기 쉬운 XML 도구 세트입니다. XML을 처리하기 편리한 객체로 변환할 수 있고, XML 데이터를 구성하고 생성할 수도 있습니다. 단, 네임스페이스를 포함하는 xml에는 적용되지 않으며, xml은 올바른 형식이어야 합니다.

simplexml_import_dom, simplexml_load_file, simplexml_load_string의 세 가지 메소드를 제공합니다. 함수 이름은 함수의 기능을 직관적으로 설명합니다. 세 가지 함수 모두 SimpleXMLElement 개체를 반환하며 SimpleXMLElement 작업을 통해 데이터를 읽거나 추가합니다.

SimpleXML의 장점은 개발이 간단하다는 것입니다. 단점은 처리하기 전에 XML 전체를 메모리에 로드하므로 내용이 많은 XML 문서를 구문 분석하지 못할 수도 있다는 것입니다. 작은 파일을 읽는 중이고 xml에 네임스페이스가 포함되어 있지 않다면 SimpleXML을 선택하는 것이 좋습니다.

XMLReader

XMLReader는 PHP5 이후의 확장 기능입니다(5.1 이후 기본적으로 설치됨). 문서 흐름에서 커서처럼 이동하고 각 노드에서 중지됩니다. 이는 입력에 대한 빠르고 캐시되지 않은 스트리밍 액세스를 제공하며, 스트림이나 문서를 읽을 수 있어 사용자가 여기에서 데이터를 추출하고 애플리케이션에 의미가 없는 레코드를 건너뛸 수 있습니다.

DomDocument를 사용하여 XML 파일 분석

작업 단계:

1. createElement 메서드를 사용하여 노드를 생성합니다.

2 createTextNode 메서드를 사용하여 텍스트 콘텐츠를 생성합니다.

3.

4. createAttribute 메소드를 사용하여 속성을 생성하세요

위 내용은 PHP가 XML을 구문 분석하는 여러 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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