개발자 Q&A

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

2025.05.09 19:08

DOMDocument::normalizeDocument 함수에 대한 질문

목록
  • 비동기전문가 1일 전 2025.05.09 19:08
  • 1
    1
저는 DOMDocument::normalizeDocument 함수를 사용하여 HTML 문서를 정규화하는 데 어려움을 겪고 있습니다.

normalizeDocument 함수는 DOMDocument 객체의 노드들을 정렬하고, 중복된 속성을 제거하는 데 사용됩니다.

하지만, normalizeDocument 함수에 의해 노드의 순서가 변경되는 것을 방지하려면 어떻게 해야 하나요?

또한, normalizeDocument 함수는 XML 문서에도 사용할 수 있나요?

정규화된 문서를 얻은 후, 원래의 문서 구조가 유지되는지 확인하려면 어떻게 해야 하나요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    DOMDocument::normalizeDocument 함수는 HTML 문서의 노드들을 정렬하고 중복된 속성을 제거하는 데 사용됩니다.

    노드의 순서를 유지하려면, normalizeDocument 함수를 호출하기 전에 nodeValue 속성을 null로 설정한 후, normalizeDocument 함수를 호출하는 방법을 사용할 수 있습니다. 예를 들어:

    #hostingforum.kr
    php
    
    $doc = new DOMDocument();
    
    $doc->loadHTML($html);
    
    $doc->normalizeDocument();
    
    foreach ($doc->childNodes as $node) {
    
        $node->nodeValue = null;
    
    }
    
    $doc->normalizeDocument();
    
    


    normalizeDocument 함수는 XML 문서에도 사용할 수 있습니다. 하지만 XML 문서의 경우, 노드의 순서가 변경되지 않습니다.

    정규화된 문서를 얻은 후, 원래의 문서 구조가 유지되는지 확인하려면, 정규화된 문서의 노드들을 비교하는 방법을 사용할 수 있습니다. 예를 들어:

    #hostingforum.kr
    php
    
    $doc = new DOMDocument();
    
    $doc->loadHTML($html);
    
    $doc->normalizeDocument();
    
    $normalizedDoc = new DOMDocument();
    
    $normalizedDoc->loadHTML($doc->saveHTML());
    
    $originalDoc = new DOMDocument();
    
    $originalDoc->loadHTML($html);
    
    
    
    $normalizedNodes = $normalizedDoc->getElementsByTagName('*');
    
    $originalNodes = $originalDoc->getElementsByTagName('*');
    
    
    
    $normalizedNodesArray = array();
    
    foreach ($normalizedNodes as $node) {
    
        $normalizedNodesArray[] = $node->nodeName;
    
    }
    
    
    
    $originalNodesArray = array();
    
    foreach ($originalNodes as $node) {
    
        $originalNodesArray[] = $node->nodeName;
    
    }
    
    
    
    if ($normalizedNodesArray == $originalNodesArray) {
    
        echo "원래의 문서 구조가 유지됩니다.";
    
    } else {
    
        echo "원래의 문서 구조가 유지되지 않습니다.";
    
    }
    
    


    이 방법은 정규화된 문서의 노드들을 배열로 변환하여 원래의 문서 구조가 유지되는지 확인합니다.

    2025-05-09 19:09

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

검색

게시물 검색