# Newbie Frage. CSS Stylesheet einlesen und suchen nach Tags



## Tanja 24 (13. Okt 2005)

Hallo, 

ich möchte eine Stylesheet Datei einlesen und dann nach einen bestimmen Tag suchen. Gibt es dazu einen Parser der mir weiterhilft? 

Vielen Dank für eure Hilfe!


----------



## Tanja 24 (14. Okt 2005)

Hat nicht jemand einen Tipp?


----------



## KSG9|sebastian (14. Okt 2005)

ähm....ein CSS Stylesheet ? 
Ein CSS - Sheet hat _keine_ tags, ein CSS sieht so aus:


```
body{
  htmlattribut = value;
}

a{
  htmlattribut = value;
}
```

Wie willst du das bitte parsen ? 
Du könntest das ganze in Tags aufsplitten, dann schmeist du tagnahme und die geschweiften klammern raus, dannach liest du es in ein Properties-Objekt.

Ob das so gut ist bezweifel ich..wozu brauchst du das denn ?


----------



## Tanja 24 (14. Okt 2005)

ich will die Stylesheet einlesen und dann per Gui bearbeiten und dann speichern...


----------



## Bleiglanz (14. Okt 2005)

für gutmütige Stylesheets könnte das hier gehen

```
public static Map<String,Map<String,String>> parseStylesheet(final String css){
        final Map<String,Map<String,String>> resultMap = new HashMap<String,Map<String,String>>();
        final String[] elements = css.split("\\}");
        for(String element : elements){
            final String parts[] = element.split("\\{");
            if(parts.length>1){
                final Map<String,String> attributeMap = new HashMap<String,String>();
                for(String attrline : parts[1].split(";")){
                    final String[] nameValue = attrline.split(":");
                    if(nameValue.length>1){
                        attributeMap.put(nameValue[0].trim(), nameValue[1].trim());
                    }
                }
                if(attributeMap.size()>0){
                    resultMap.put(parts[0].trim(), attributeMap);
                }
            }
        }
        return resultMap;
    }
```


----------



## m@nu (14. Okt 2005)

vorsicht! CSS kann man auch anders schreiben!


```
body { property: value; }
```
es müssen nicht zwingend zeilenumbrüche und "=" vorhanden sein... (gehen "=" überhaupt!?)
zudem gibts für grössen (z.b. ränder etc.) spezielle arten, wie man werte angeben kann:

```
TD { font:border: 1px,1px,2px,3px; }
```
(ob die bezeichner jetzt stimmen weis ich nicht mehr, aber so gehts auch)

such doch mal nach einer parser-library... vielleicht gibts da schon was... ansonsten wird dir wohl nix anderes übrigbleiben als selber einen parser zu schreiben...

<edit>
ggg warst schneller  ... jop, wie du sagtest: für gutmütige
</edit>


----------



## Tanja 24 (14. Okt 2005)

Einen Parser finde ich nicht dacht vielleicht jemand hat da schon mal was benutzt...

Zu deinem Code Bleiglanz kannst du mir da weiterhelfen... dass ich es an "meine" stylesheet anpassen kann? Vielen Dank euch!!!


----------

