HTML 민첩성 팩을 사용할 때 인코딩 오류

c# html html-agility-pack parsing

문제

이 실제 사이트에서 찾은 일부 코드를 사용하여 HTML 문서를 구문 분석하려고하지만 구문 분석 오류가 계속 발생합니다.

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

        // There are various options, set as needed
        htmlDoc.OptionFixNestedTags = true;

        // filePath is a path to a file containing the html
        htmlDoc.Load(@"C:\Documents and Settings\Mine\My Documents\Random.html");

        // Use:  htmlDoc.LoadXML(xmlString);  to load from a string

        // ParseErrors is an ArrayList containing any errors from the Load statement
        if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count > 0)
        {
            // Handle any parse errors as required
            MessageBox.Show("Oh no");
        }
        else
        {

            if (htmlDoc.DocumentNode != null)
            {
                HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//head");

                if (bodyNode != null)
                {
                    MessageBox.Show("Hello");
                }
            }
        }

어떤 도움을 주시면 감사하겠습니다 :)

수락 된 답변

야생에서 HTML은 부적합하고 준수하지 않으며 유효성이 확인되지 않을 수 있습니다. XHTML 또는 매우 간단한 HTML 만 ParseErrors를 채우지 않고 이동합니다. 필자는 HTML 민첩성 팩이 매우 강력하고 ParseErrors가 생성 되더라도 대부분의 HTML 소스에서 괜찮은 DOM 트리를 만들 것이라고 생각했습니다. else를 삭제하고 else 블록이 정상적으로 실행되도록합니다.

DOM 트리를 작성하지 않았다면 생성 된 ParseError를 조사해야합니다. 부분 트리 만 만들었다면 노드를 반복하여 인쇄하거나 messagebox를 사용하여 DOM 트리의 어느 부분이 빌드되었는지 확인하십시오. 나무 전체가 필요하지 않을 수도 있습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.