HtmlAgilityPack은 OuterHtml에 누락 된 닫기 태그를 생성합니다.

c# html html-agility-pack

문제

htmlAgilityPack을 사용하여 html 텍스트를 구문 분석하고 조작합니다. 그러나 DocumentNode.OuterHtml은 누락 된 닫는 태그를 제공합니다.

문제를 분리하기 위해 이제는 구문 분석을 수행하고 OuterHtml (조작 없음)을 얻습니다.

var document = new HtmlDocument();
document.LoadHtml(myHtml);
result = document.DocumentNode.OuterHtml;

원본 : (myHtml)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><title>
     MyTitle
</title>

OutputHtml : (결과) meta 요소가 닫혀 있지 않음을 알립니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="X-UA-Compatible" content="IE=Edge"><title>
    MyTitle
</title>

비슷하게 모든 입력 및 img 요소는 열려 있습니다. (문제가 아니어야한다고 대답하지 마세요. 그러지 마세요.) Chrome이 페이지를 올바르게 렌더링 할 수 없습니다. 계속 읽으세요.

더 이상한 무엇입니까 :

원본 : (myHtml)

    <option value="10">Afrikaans</option>
    <option value="11">Albanian</option>
    <option value="12">Arabic</option>
    <option value="13">Armenian</option>
    <option value="14">Azerbaijani</option>
    <option value="15">Basque</option>

OutputHtml : (결과) 완전한 명시적인 종료 태그가 누락되어 있습니다.

    <option value="10">Afrikaans
    <option value="11">Albanian
    <option value="12">Arabic
    <option value="13">Armenian

HtmlAgilitPack 최신 NuGet 패키지 사용 : id = "HtmlAgilityPack"version = "1.4.9"

수락 된 답변

문서를로드 할 때 설정할 수있는 몇 가지 옵션이 있습니다.

OptionAutoCloseOnEnd

닫히지 않은 노드에 대한 닫는 작업을 문서의 끝에 또는 직접 수행해야하는지 여부를 정의합니다. 이것을 true로 설정하면 브라우저가 페이지를 렌더링하는 방법을 실제로 변경할 수 있습니다.

document = new HtmlDocument();
document.OptionAutoCloseOnEnd = true;
document.LoadHtml(content);

관련 정보 출처 :

HtmlAgilityPack은 옵션 끝 태그를 삭제합니다.

HTMLAgilityPack으로 이미지 태그가 닫히지 않습니다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow