개발자 Q&A

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

2025.06.15 19:51

DOMElement::append에 대한 질문입니다.

목록
  • UI컴포넌트장인 오래 전 2025.06.15 19:51
  • 28
    1
DOMElement::append 메서드는 DOMElement에 자식 요소를 추가할 때 사용됩니다.
하지만 내 경우에는 append 메서드를 사용했을 때,
append 메서드가 여러 개의 자식 요소를 추가하는 경우에는
자식 요소들 사이에 공백이 생성되는 것을 확인했습니다.

예를 들어,

php

$div = new DOMDocument();

$div->loadHTML('');

$child1 = $div->createElement('p');

$child2 = $div->createElement('span');

$child3 = $div->createElement('b');



$div->getElementsByTagName('div')[0]->appendChild($child1);

$div->getElementsByTagName('div')[0]->appendChild($child2);

$div->getElementsByTagName('div')[0]->appendChild($child3);



이 경우, 결과적으로 `

` 가 생성됩니다.
하지만, 내 경우에는 `

` 가 생성됩니다.
즉, 자식 요소들 사이에 공백이 생성되는 것을 확인했습니다.

이러한 문제가 발생하는 이유는 무엇이며,
append 메서드를 사용하여 자식 요소를 추가하는 경우,
자식 요소들 사이에 공백이 생성되지 않도록 하는 방법은 무엇입니까?

    댓글목록

    profile_image
    나우호스팅  오래 전



    DOMElement::append 메서드는 DOMElement에 자식 요소를 추가할 때 사용됩니다. 하지만 내 경우에는 append 메서드를 사용했을 때, 여러 개의 자식 요소를 추가하는 경우에는 자식 요소들 사이에 공백이 생성되는 것을 확인했습니다.

    이러한 문제가 발생하는 이유는 DOMDocument의 loadHTML 메서드가 HTML 문자열을 파싱할 때, 자식 요소들 사이에 공백을 유지하는 방식으로 파싱하기 때문입니다.

    이러한 문제를 해결하기 위해서는 DOMDocument의 loadHTML 메서드 대신, DOMDocument의 loadXML 메서드를 사용하거나, 자식 요소들 사이에 공백을 제거하는 메서드를 사용할 수 있습니다.

    예를 들어, 다음과 같이 자식 요소들 사이에 공백을 제거하는 메서드를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $div = new DOMDocument();
    
    $div->loadHTML('');
    
    $child1 = $div->createElement('p');
    
    $child2 = $div->createElement('span');
    
    $child3 = $div->createElement('b');
    
    
    
    $div->getElementsByTagName('div')[0]->appendChild($child1);
    
    $div->getElementsByTagName('div')[0]->appendChild($child2);
    
    $div->getElementsByTagName('div')[0]->appendChild($child3);
    
    
    
    // 자식 요소들 사이에 공백을 제거하는 메서드를 사용합니다.
    
    $div->getElementsByTagName('div')[0]->nodeValue = trim($div->getElementsByTagName('div')[0]->nodeValue);
    
    
    
    echo $div->saveHTML();
    
    


    이러한 코드를 실행하면, `

    ` 가 생성됩니다.

    또한, DOMDocument의 loadXML 메서드를 사용하여 자식 요소들 사이에 공백을 제거할 수 있습니다.

    #hostingforum.kr
    php
    
    $div = new DOMDocument();
    
    $div->loadXML('');
    
    $child1 = $div->createElement('p');
    
    $child2 = $div->createElement('span');
    
    $child3 = $div->createElement('b');
    
    
    
    $div->getElementsByTagName('div')[0]->appendChild($child1);
    
    $div->getElementsByTagName('div')[0]->appendChild($child2);
    
    $div->getElementsByTagName('div')[0]->appendChild($child3);
    
    
    
    echo $div->saveXML();
    
    


    이러한 코드를 실행하면, `

    ` 가 생성됩니다.

    이러한 방법을 사용하여 자식 요소들 사이에 공백을 제거할 수 있습니다.

    2025-06-15 19:52

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

검색

게시물 검색