HtmlAgiltyPack은 HTML을 구문 분석하고 span 태그 및 클래스 이름에서 값을 가져옵니다.

asp.net asp.net-mvc c# html html-agility-pack

문제

내 웹 요청 클라이언트를 통해 다운로드 한 HTML이 있습니다. 그리고 전체 HTML 중에서이 부분 만 구문 분석하고 싶습니다.

<span class="sku">
<span class="fb">SKU                            :</span>118880101
</span>

이 값을 검색하기 위해 HTML Agilty Pack을 사용하고 있습니다. 118880101

그리고 저는 다음과 같이 썼습니다 :

 HtmlDocument htmlDoc = new HtmlDocument();
 htmlDoc.LoadHtml(html);
 return htmlDoc.DocumentNode.SelectNodes("//span[@class='sku']").ElementAt(0).InnerText;

그리고 이것은 HTML에서이 값을 돌려줍니다.

SKU                            :118880101

문자 그대로 이런 식으로 공백이 포함되어 있습니다 ...이 논리를 HTML Agilty 팩으로 수정하면 어떻게하면 118880101 값만 가져올 수 있습니까?

누군가 나를 도울 수 있습니까?

편집 :이 같은 정규식 일을 할 것이다 :

Substring(skuRaw.LastIndexOf(':') + 1);

":"문자열을받은 후 모든 것을 취하는 것을 의미합니다 ...하지만이 정규식을 사용하는 것이 안전한지 확실하지 않습니다.

수락 된 답변

이 시도

     HtmlDocument htmlDoc = new HtmlDocument();
     htmlDoc.LoadHtml(html);
     var innerText=htmlDoc.DocumentNode.SelectNodes("//span[@class='sku']")
                          .ElementAt(0).InnerText;
     return innerText.replace(/\D/g,'');

Html Agility 팩만 사용하려면이 방법을 사용하십시오.

       var child = htmlDoc.DocumentNode.SelectNodes("//span[@class='fb']")
                           .FirstOrDefault();
        if (child != null)
        {
            var parent = child.ParentNode;
            parent.RemoveChild(child);
            var innerText = parent.InnerText;              
        }


Related

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