개발자 Q&A

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

2025.07.14 17:26

XSLTProcessor::transformToDoc에 대한 도움을 필요로 합니다.

목록
  • 백엔드도령 4일 전 2025.07.14 17:26
  • 33
    1
제가 XSLTProcessor::transformToDoc를 사용하여 XML을 변환하고자 합니다.
하지만 transformToDoc 메소드의 반환값이 DOMDocument 인 것을 알게되었습니다.
여기서 문제가 발생합니다.

DOMDocument는 XML 파일을 로드하는 메소드를 제공하는데,
이 메소드는 XML을 파싱하여 DOMDocument 객체를 반환합니다.
반면에 transformToDoc 메소드는 XML을 변환하여 DOMDocument 객체를 반환합니다.
이것이 문제가 되는 이유는, transformToDoc 메소드는 XML을 변환하기 위해 DOMDocument 객체를 사용하기 때문입니다.

이러한 문제를 해결하기 위해 transformToDoc 메소드는 DOMDocument 객체를 파싱하여 XML을 변환하는 방식으로 동작합니다.
이러한 방식은 XML을 변환하는 동안 DOMDocument 객체에 대한 참조를 유지하기 때문에,
XML을 변환한 후에도 DOMDocument 객체를 파싱하여 XML을 변환할 수 있습니다.

이러한 문제를 해결하기 위해,
transformToDoc 메소드의 반환값을 DOMDocument 객체에서 DOMDocumentFragment 객체로 변경하는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  4일 전



    XSLTProcessor::transformToDoc 메소드의 반환값을 DOMDocument 객체에서 DOMDocumentFragment 객체로 변경하는 방법은 없습니다.

    이유는 DOMDocumentFragment 객체는 XML 문서의 일부분을 나타내는 객체로, XML 문서의 전체를 나타내는 DOMDocument 객체와는 다릅니다.

    XSLTProcessor::transformToDoc 메소드는 XML을 변환하여 DOMDocument 객체를 반환하는 방식으로 동작하기 때문에, DOMDocumentFragment 객체를 반환하는 것은 불가능합니다.

    그러나, transformToDoc 메소드의 반환값을 DOMDocument 객체에서 DOMDocumentFragment 객체로 변경하는 대안은 다음과 같습니다.

    1. transformToDoc 메소드의 반환값을 DOMDocument 객체로 받습니다.
    2. DOMDocument 객체의 노드 목록을 가져옵니다.
    3. DOMDocument 객체를 파싱하여 XML을 변환하는 대신, 노드 목록을 사용하여 XML을 변환합니다.

    다음은 예제 코드입니다.

    #hostingforum.kr
    php
    
    $xsltProcessor = new XSLTProcessor();
    
    $xsltProcessor->importStylesheet($xsl);
    
    
    
    $xml = new DOMDocument();
    
    $xml->loadXML($xmlString);
    
    
    
    $transformedDoc = $xsltProcessor->transformToDoc($xml);
    
    
    
    $fragment = $transformedDoc->documentElement;
    
    
    
    // 노드 목록을 가져옵니다.
    
    $nodes = $fragment->childNodes;
    
    
    
    // 노드 목록을 사용하여 XML을 변환합니다.
    
    foreach ($nodes as $node) {
    
        // 노드의 내용을 출력합니다.
    
        echo $node->nodeValue . "n";
    
    }
    
    


    이 코드에서는 transformToDoc 메소드의 반환값을 DOMDocument 객체로 받고, 노드 목록을 가져옵니다. 그런 다음, 노드 목록을 사용하여 XML을 변환합니다.

    2025-07-14 17:27

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

검색

게시물 검색