개발자 Q&A

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

2025.06.20 06:03

DOMXPath::evaluate에 대한 질문

목록
  • Perl매니아 오래 전 2025.06.20 06:03
  • 55
    1
제가 사용 중인 PHP 코드에서 DOMXPath::evaluate를 사용하여 XML 문서에서 데이터를 추출하려고 합니다. 하지만 evaluate 메서드를 사용할 때, 결과가 null이 나와집니다.

evaluate 메서드가 제대로 작동하지 않는 이유를 알고 싶습니다.

evaluate 메서드를 사용한 코드는 다음과 같습니다.

php

$xml = new DOMDocument();

$xml->loadXML($xml_string);



$xpath = new DOMXPath($xml);

$result = $xpath->evaluate("count(//item)");



if ($result == null) {

    echo "결과가 없습니다.";

} else {

    echo $result;

}



위 코드에서 evaluate 메서드가 제대로 작동하지 않는 이유를 알려주시면 감사하겠습니다.

위 코드에서 사용한 XML 문서는 다음과 같습니다.

xml



    

        제품1

        1000

    

    

        제품2

        2000

    





위 코드에서 evaluate 메서드가 제대로 작동하지 않는 이유를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  오래 전



    evaluate 메서드가 제대로 작동하지 않는 이유는 두 가지 경우가 있습니다.

    1. XPath 표현식이 올바르지 않음: evaluate 메서드는 XPath 표현식을 사용하여 XML 문서에서 데이터를 추출합니다. XPath 표현식이 올바르지 않으면 evaluate 메서드는 null을 반환합니다. 예를 들어, XPath 표현식이 "//item"이면 evaluate 메서드는 모든 item 요소를 반환해야 하지만, "//item"은 모든 item 요소를 반환하는 XPath 표현식이 아닙니다. 올바른 XPath 표현식은 "//item/*"입니다.

    2. XML 문서가 올바르지 않음: evaluate 메서드는 XML 문서의 구조에 따라 데이터를 추출합니다. XML 문서가 올바르지 않으면 evaluate 메서드는 null을 반환합니다. 예를 들어, XML 문서가 다음과 같이 작성되어 있으면 evaluate 메서드는 null을 반환합니다.

    #hostingforum.kr
    xml
    
    
    
        
    
            제품1
    
            1000
    
        
    
        
    
            제품2
    
            2000
    
        
    
    
    
    


    위 코드에서 evaluate 메서드가 제대로 작동하지 않는 이유는 XPath 표현식이 올바르지 않기 때문입니다. 올바른 XPath 표현식은 "//item/*"입니다.

    #hostingforum.kr
    php
    
    $result = $xpath->evaluate("//item/*");
    
    


    위 코드에서 사용한 XML 문서는 올바르며, evaluate 메서드는 모든 item 요소의 자식 요소를 반환합니다.

    2025-06-20 06:04

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

검색

게시물 검색