HtmlAgiltyPack analysiert HTML und nimmt den Wert aus dem Span-Tag und dem Klassennamen heraus

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

Frage

Ich habe einen HTML-Code, den ich über meinen Webrequest-Client herunterlade. Und von ganzem HTML möchte ich nur diesen Teil von HTML analysieren:

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

Ich verwende HTML agility pack, um diesen Wert abzurufen: 118880101

Und ich habe so etwas geschrieben:

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

Und das gibt mir diesen Wert von HTML zurück:

SKU                            :118880101

Buchstäblich so, Leerzeichen enthalten ... Wie kann ich diese Logik mit HTML Agilty Pack beheben, so dass ich nur diesen Wert 118880101 herausnehmen kann?

Kann mir jemand helfen?

Edit: Eine Regex wie diese würde das Ding tun:

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

was bedeuten würde, alles nach ":" zu nehmen, um eine Zeichenkette zu erhalten, die ich erhalte ... Aber ich bin mir nicht sicher, ob es sicher ist, Regex so zu verwenden?

Akzeptierte Antwort

Versuche dies

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

Wenn Sie nur Html Agility-Pack verwenden möchten, versuchen Sie dies

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


Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow