2010-06-08 3 views
0

Quelqu'un peut-il me dire une méthode efficace de récupération du CSS entre les balises sur une page de balisage dans .NET? J'ai développé une méthode qui utilise la récursivité, Split() et CompareTo() mais qui est vraiment longue, et je suis sûr qu'il doit y avoir une méthode beaucoup plus courte (et plus intelligente) pour faire le même.Parse CSS à partir de <style> éléments

Veuillez garder à l'esprit qu'il est possible d'avoir plus d'un élément sur une page, et que l'élément peut être soit.

Répondre

0

Essayez Regex.

goto: http://gskinner.com/RegExr/ pâte html avec css, et utiliser cette expression en haut:

<style type=\"text/css\">(.*?)</style> 

ici est la version C#:

using System.Text.RegularExpressions; 

Match m = Regex.Match(this.textBox1.Text, "<style type=\"text/css\">(.*?)</style>", RegexOptions.Singleline); 

if (m.Success) 
{ 
    string css = m.Groups[1].Value; 
    //do stuff 
} 
+1

Analyser html avec Regex? Les gars, vous savez quoi t –

+0

Quel est le problème avec Regex? Vous aimez utiliser string.split() jusqu'à ce que vous obteniez vos résultats? – tcables

+0

C'est en fait la solution que j'ai choisie. Très facile à mettre en œuvre et la façon la plus directe de réaliser ce que je veux, même si je vais jeter un oeil à HTML Agility Pack dans un proche avenir. – awj

1

Voici un analyseur CSS C#. Devrait faire ce dont vous avez besoin.

http://www.codeproject.com/KB/recipes/CSSParser.aspx

+0

J'ai déjà le code pour faire face à la CSS , J'ai juste besoin d'une bonne façon de tirer le CSS dans ma classe. L'analyseur CSS que vous avez pointé est plus concerné, comme le dit le titre, en analysant le CSS pour ses attributs, ce qui n'est pas ce que je cherche à faire ici; Je veux juste obtenir le CSS. – awj

+0

Je viens de télécharger le code et cela semble très prometteur. Je pense que la solution idéale est d'utiliser l'expression rationnelle de tcabls (ci-dessus), puis analyser le CSS avec ce que vous avez suggéré. – awj

3

Je serais probablement aller pour HTML Agility Pack qui vous donne un accès DOM style aux pages. Il serait capable de choisir vos morceaux de données CSS, mais pas réellement analyser ces données en paires clé/valeur. Vous pouvez obtenir les parties pertinentes de HTML en utilisant des expressions de style X-Path.

Édition: Un exemple d'utilisation typique de Html Agility Pack est présenté ci-dessous.

HtmlDocument doc = new HtmlDocument(); 
doc.Load("file.htm"); 
var nodes = doc.DocumentElement.SelectNodes("//a[@style"]); 
//now you can iterate over the selected nodes etc 
+0

Cela ressemble plus à ce que je cherche, même si j'espérais vraiment une méthode simple ou deux simples. Je vais enquêter et afficher sur mes résultats. Merci. – awj

+0

Ceci est assez simple - voir ma mise à jour pour un exemple d'utilisation typique. –

+1

'var nodes = doc.DocumentNode.SelectNodes (" // a [@style] ");' pour les versions plus récentes – BurnsBA

Questions connexes