>  기사  >  백엔드 개발  >  DOM 기본 사항 및 php_php 기술을 사용하여 XML 콘텐츠를 읽는 방법

DOM 기본 사항 및 php_php 기술을 사용하여 XML 콘텐츠를 읽는 방법

WBOY
WBOY원래의
2016-05-16 20:24:58884검색

이 기사의 예에서는 DOM의 기본 사항과 PHP를 사용하여 XML 콘텐츠를 읽는 방법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

DOM(문서 객체 모델): 문서 객체 모델. 핵심 아이디어는 xml 파일을 개체 모델로 처리한 다음 개체를 통해 xml 파일을 작동하는 것입니다.

PHP는 xml 문서에 대한 추가, 삭제, 수정 및 쿼리(curd) 작업을 수행합니다.

xml 문서: class.xml

코드 복사 코드는 다음과 같습니다.
<수업>
<학생 정보="뷰티">
샤오챠오
<성별>여성
20

<학생>
저우 유
<섹스>남성
25


class.xml에 해당하는 DOM 트리 구조 다이어그램

php 파일(xml 문서에서 작동)

쿼리 연산 사례:

코드 복사 코드는 다음과 같습니다.
//1. DOMDocument 객체를 생성합니다. 이 개체는 xml 파일을 나타냅니다.
$xmldoc = 새 DOMDocument();
//2. xml 파일 로드(파싱할 xml 파일을 지정하면 dom 트리 노드가 메모리에 로드됩니다)
$xmldoc->load("class.xml");
//3. 목표: 첫 번째 학생의 이름을 가져옵니다
//3.1 첫 번째 단계는 모든 학생을 읽는 것입니다
$students = $xmldoc->getElementsByTagName("student");//Method getElementsByTagName: 주어진 노드 이름(여기서는 Student)에 따라 해당 노드를 찾아 DOMNodeList 형태의 객체를 반환합니다. 모든 학생. var_dump($students) 를 이용하여 보실 수 있으며, 반환값을 기준으로 매뉴얼을 검색하시면 아래의 속성과 메소드를 보실 수 있습니다.
echo "".$students->length." 학생이 있습니다
";

//3.2 첫 번째 학생 읽기
$stu1 = $students->item(0);//첫 번째 학생을 읽습니다. 반환 값은 DOMElement 객체입니다. 직접 echo $stu1->nodeValue; 는 이름, 성별, 나이를 출력합니다.
//3.3 첫 번째 학생의 이름을 가져옵니다
$stu1_name = $stu1->getElementsByTagName("이름");
//3.4 이름 읽기
echo $stu1_name->item(0)->nodeValue;
?>

참고:

(1) 인코딩 문제;
(2) 이것은 단지 기본적인 데모일 뿐이며 나중에 루프와 함수를 사용하여 작동하게 됩니다. (3) var_dump()를 이용하여 변수의 반환값을 확인한 후, 반환값을 이용하여 매뉴얼에서 반환값에 해당하는 속성과 메소드를 찾아봅니다.
(4) 전체 시퀀스 후에 getElementByTagName()은 레이어별로 읽을 필요가 없습니다. 실제로 학생을 먼저 읽지 않고 노드 이름을 직접 읽을 수 있습니다(물론 동일한 학생 이름에 여러 학생이 있는 경우). 문제가 있을 것이고 여기(xpath)에서 새로운 지식 포인트를 배워야 합니다.

위 코드는 다음과 같이 간단하게 변경할 수 있습니다.


코드 복사 코드는 다음과 같습니다.
//1. DOMDocument 객체를 생성합니다. 이 개체는 xml 파일을 나타냅니다.
$xmldoc = 새 DOMDocument();
//2. xml 파일 로드(파싱할 xml 파일을 지정하면 dom 트리 노드가 메모리에 로드됩니다)
$xmldoc->load("class.xml");
//3. 목표: 첫 번째 학생의 이름을 가져옵니다
$stu = $xmldoc->getElementsByTagName("name");//노드 이름 직접 찾기
$stu1 = $stu->item(0);//item(1)일 때 Zhou Yu를 얻을 수 있습니다
echo $stu1->nodeValue;
?>
이 기사가 모든 사람의 PHP XML 프로그래밍 설계에 도움이 되기를 바랍니다.

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