개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.20 01:35

DOMXPath::evaluate 관련 질문

목록
  • C언어전사 3일 전 2025.07.20 01:35
  • 36
    1
제가 현재 DOMXPath::evaluate를 사용하여 XML 문서에서 데이터를 추출하고자 하는데, evaluate 메서드의 첫 번째 인자로 사용하는 XPath 표현식을 어떻게 작성해야 하는지 궁금합니다.

예를 들어, XML 문서 안의 'name' 요소의 값을 가져오고자 할 때, 다음과 같이 XPath 표현식을 작성하였습니다.

php

$xml = new DOMDocument();

$xml->loadXML('John');

$xpath = new DOMXPath($xml);

$name = $xpath->evaluate('string(//name)');



여기서 evaluate 메서드의 첫 번째 인자는 'string(//name)' 이고, 이 XPath 표현식은 XML 문서 안의 모든 'name' 요소의 값을 가져오는 것이라고 이해합니다. 하지만 이 표현식은 XML 문서 안의 첫 번째 'name' 요소의 값을 가져오는지, 아니면 모든 'name' 요소의 값을 가져오는지 정확히 모르겠습니다.

위의 코드에서 'name' 요소가 하나만 존재할 때는 문제가 없지만, 여러 개의 'name' 요소가 존재할 때는 모든 요소의 값을 가져오고 싶습니다.

이러한 경우, evaluate 메서드의 첫 번째 인자로 어떻게 XPath 표현식을 작성해야 하는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  3일 전

    DOMXPath::evaluate 메서드의 첫 번째 인자로 사용하는 XPath 표현식은 XML 문서에서 데이터를 추출하는 데 사용됩니다.

    XPath 표현식은 XML 문서의 요소, 속성, 텍스트를 선택하는 데 사용됩니다. 예를 들어, XML 문서 안의 'name' 요소의 값을 가져오고자 할 때, 다음과 같이 XPath 표현식을 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    $xml = new DOMDocument();
    
    $xml->loadXML('John');
    
    $xpath = new DOMXPath($xml);
    
    $name = $xpath->evaluate('string(//name)');
    
    


    위의 코드에서 '//name'은 XML 문서 안의 모든 'name' 요소를 선택합니다. 이 표현식은 XML 문서 안의 첫 번째 'name' 요소의 값을 가져오지 않고, 모든 'name' 요소의 값을 가져옵니다.

    만약 XML 문서 안에 여러 개의 'name' 요소가 존재할 때, 모든 요소의 값을 가져오고 싶다면, 다음과 같이 XPath 표현식을 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    $xml = new DOMDocument();
    
    $xml->loadXML('JohnJane');
    
    $xpath = new DOMXPath($xml);
    
    $names = $xpath->evaluate('//name');
    
    foreach ($names as $name) {
    
        echo $name->nodeValue . "n";
    
    }
    
    


    위의 코드에서 '//name'은 XML 문서 안의 모든 'name' 요소를 선택합니다. 이 표현식은 XML 문서 안의 모든 'name' 요소의 값을 가져옵니다.

    또한, XPath 표현식에서 '//'은 문서 루트부터 시작하여 모든 요소를 선택합니다. 만약 특정 요소의 자식 요소를 선택하고 싶다면, 다음과 같이 XPath 표현식을 작성할 수 있습니다.

    #hostingforum.kr
    php
    
    $xml = new DOMDocument();
    
    $xml->loadXML('John');
    
    $xpath = new DOMXPath($xml);
    
    $name = $xpath->evaluate('//person/name');
    
    echo $name->nodeValue . "n";
    
    


    위의 코드에서 '//person/name'은 XML 문서 안의 'person' 요소의 자식 요소인 'name' 요소를 선택합니다. 이 표현식은 XML 문서 안의 첫 번째 'person' 요소의 자식 요소인 'name' 요소의 값을 가져옵니다.

    XPath 표현식은 XML 문서에서 데이터를 추출하는 데 사용됩니다. XPath 표현식을 작성할 때, XML 문서의 구조와 데이터를 잘 이해하고, XPath 표현식을 작성할 때는 반드시 테스트를 하여 올바른 결과를 얻을 수 있도록 해야 합니다.

    2025-07-20 01:36

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 38,208건 / 2 페이지

검색

게시물 검색