HTMLAgilityPack을 사용하여 HTML 옵션 값을 개별적으로 선택하기

c# html-agility-pack

문제

옵션 목록의 값을 개별 항목으로 가져 오려고하지만 대신이 코드는 전체 목록을 하나의 요소로 가져 오는 것입니다. 사용중인 코드는 다음과 같습니다.

List<string> chapterTitles = new List<string>();
HtmlNode.ElementsFlags.Remove("option");
doc.LoadHtml(htmlContent);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//select[@id='chap_select']/option"))
chapterTitles.Add(node.InnerText);

chapterTitles의 첫 번째 요소는 (예를 들어) 12 개의 값이있는 옵션 목록에 해당하는 12 개의 다른 항목이 목록 대신 전체 옵션 값 집합을 포함합니다.

다음은 구문 분석하려고하는 HTML 세그먼트입니다.

List<string> chapterTitles = new List<string>();
HtmlNode.ElementsFlags.Remove("option");
doc.LoadHtml(htmlContent);
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//select[@id='chap_select']/option"))
chapterTitles.Add(node.InnerText);

어떤 제안?

수락 된 답변

HtmlAgilityPack은 그 코드를 정말 잘 해석하지 못하는 것 같습니다. 예를 들어, 코드

<option  value=3 >3. Chapter Two<option  value=4 >...

정말로 있어야한다.

<option  value=3 >3. Chapter Two<option  value=4 >...

그래서, 내가 당신에게 다음과 같은 것을하는 것을 제안하는 것을 제안합니다 :

<option  value=3 >3. Chapter Two<option  value=4 >...

주요 차이점 두 가지 :

  1. HtmlNode.ElementsFlags.Remove("option"); 삭제 HtmlNode.ElementsFlags.Remove("option");
  2. 텍스트는 내부 대신에 option 노드 옆에있는 노드에서 찾을 수 있습니다.



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