HtmlAgilityPack에 의한 속성 값 얻기

c# html-agility-pack

문제

<div class="vcard-names-container py-3 js-sticky js-user-profile-sticky-fields " style="position: static;">
  <h1 class="vcard-names">
    <span class="vcard-fullname d-block" itemprop="name">Name 001</span>
    <span class="vcard-username d-block" itemprop="additionalName">Name 002</span>
  </h1>
</div>

안녕하세요,이 구조의 이름을 검색하는 방법을 알고 싶습니다 ( 'Name 001'및 'Name 002') 몇 가지 테스트를 수행하지만 이러한 값을 구문 분석 할 수 없습니다, 어떻게 이것을합니까?

(참고 : 나쁜 영어로 죄송합니다)

수락 된 답변

XPath 를 사용하여 문서 노드를 쿼리하여 찾고있는 노드를 찾을 수 있습니다.

static void Main(string[] args)
{
    var html = @"<div class=""vcard - names - container py - 3 js - sticky js - user - profile - sticky - fields "" style=""position: static; "">
           < h1 class=""vcard-names"">
            <span class=""vcard-fullname d-block"" itemprop=""name"">Name 001</span>
            <span class=""vcard-username d-block"" itemprop=""additionalName"">Name 002</span>
          </h1>
        </div>";

    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.LoadHtml(html);

    var names = doc.DocumentNode.SelectNodes("//span").Select(x => x.InnerText);
    foreach (var name in names)
    {
        Console.WriteLine(name);
    }
    Console.ReadLine();
}

인기 답변

이것은 당신을 위해 트릭을 할 수 있습니다.

HtmlDocument doc = new HtmlDocument();
doc.Load(YourHTMLFile);
foreach(HtmlNode Spans in doc.DocumentNode.SelectNodes("//span"))
{
    Console.WriteLine(Spans.InnerText);
}


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