Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP에서 DOM 요소를 반복하는 방법 완벽 가이드

개요

PHP에서 XML 문서를 다룰 때 DOM 객체 내부의 요소들을 순회(iterate)하면서 원하는 데이터를 추출해야 하는 경우가 자주 있습니다. 이 글에서는 getElementsByTagName() 메서드와 foreach 반복문을 활용해 DOM 요소를 효율적으로 탐색하는 방법을 알아봅니다.

예시 XML 데이터

다음은 이번 예제에서 사용할 XML 입력 데이터입니다.

<other data>
   <foo>
      <bar></bar>
      <value/>
      <pub></pub>
   </foo>
   <foo>
      <bar></bar>
      <pub></pub>
   </foo>
   <foo>
      <bar></bar>
      <pub></pub>
   </foo>
</other data>

위 XML에는 여러 개의 foo 태그가 존재하며, 각 foo 태그는 bar, pub 같은 자식 노드를 포함하고 있습니다.

DOM 요소 순회하기

DOM 객체 안의 요소들을 반복 처리하는 핵심 코드는 다음과 같습니다.

예제 코드

$elements = $dom->getElementsByTagName('foo');
$data = array();
foreach($elements as $node){
   foreach($node->childNodes as $child) {
      $data[] = array($child->nodeName => $child->nodeValue);
   }
}

코드 설명

  • getElementsByTagName('foo'): 문서 전체에서 태그 이름이 foo인 모든 요소를 NodeList 형태로 가져옵니다.
  • 외부 foreach 루프: 가져온 각 foo 노드를 하나씩 순회합니다.
  • 내부 foreach 루프: 각 foo 노드의 childNodes 속성에 접근하여 자식 노드(bar, pub 등)를 차례대로 확인합니다.
  • nodeName / nodeValue: 자식 노드의 이름과 값을 배열에 저장하여 나중에 활용할 수 있도록 합니다.

실행 결과

이 코드를 실행하면 모든 foo 태그가 순서대로 순회되며, 각 태그 안의 barpub 값이 추출됩니다. 즉, 자식 노드에 이름으로 직접 접근하여 원하는 데이터만 골라낼 수 있습니다.

정리

XML 파일의 요소들을 얻으려면 XML 문서의 모든 노드 위에서 foreach 반복문을 실행하면 됩니다. 반복문 내부에서 최상위 노드의 자식 노드를 참조하고, 그 자식 노드의 하위 값까지 자유롭게 접근할 수 있습니다. 이 패턴은 RSS 피드 파싱, 설정 파일 읽기, API 응답 처리 등 다양한 상황에서 유용하게 활용됩니다.