# XML zu CSS per PHP



## TheCreeper202 (1. Mai 2012)

hallo
ich arbeite an nem xml zu css konvertierer
die xml:
[xml]
<?xml version="1.0"?>
<style>
    <body>
        <background-color>gray</background-color>
    </body>
</style>
[/xml]
der css code der entstehen soll:

```
body { background-color: gray; }
```
die style.php:

```
<?php
class Style {
    public $code;
    public function open($name) {
        $this->code .= "$name { ";
    }
    public function close() {
        $this->code .= "}";
    }
    public function set($attr, $value) {
        $this->code .= "$attr: $value; ";
    }
    public function __toString() {
        return '<style type="text/css">'.$this->code.'</style>';
    }
}
class StyleXML extends Style {
    public function __construct($file) {
        $xml = simplexml_load_file($file);
        //konvertieren
    }
}
?>
```
was ausgeführt werden soll:

```
parent::open("body");
parent::set("background-color", "gray");
parent::close();
```
was funktioniert:

```
$bgg = new Style();
$bgg->open("body");
$bgg->set("background-color", "gray");
$bgg->close();
echo $bgg;
```


----------



## Marcinek (1. Mai 2012)

Falsches Forum?

Vielleicht mal ein PHP Forum aufsuchen?

parent::tralala

ist in java

super.tralala()

Da musst du für erben und nicht instaziieren


----------



## TheCreeper202 (1. Mai 2012)

vlt so:

```
foreach ($xml as $block=>$value) {
    parent::open($block);
    foreach($value as $bl=>$val) {
        parent::set($bl, $val);
    }
    parent::close();
}
```


----------



## Marcinek (1. Mai 2012)

Prgrammieren ist nicht raten.

Du bist im falschen Forum.


----------



## cmrudolph (1. Mai 2012)

OOP in PHP geht so:
PHP: The Basics - Manual
PHP: Scope Resolution Operator  - Manual

Du solltest auch deine Sichtbarkeiten überdenken.
Ganz unabhängig davon halte ich deinen XML Aufbau für nicht ganz optimal.

Es sollte eher so etwas sein:
[XML]<style>
    <element type="body">
        <option name="background-color">gray</option>
    </element>
</style>[/XML]
Das lässt sich viel besser parsen.


----------



## TheCreeper202 (4. Mai 2012)

```
foreach($xml->element as $type=>$index) {
    parent::open($type['type']);
    foreach ($xml->element->option as $name=>$val) {
        parent::set($name['name'], $xml->element->option);
    }
    parent::close();
}
```
oder wie?


----------



## cmrudolph (5. Mai 2012)

In der PHP Dokumentation befinden sich einige Beispiele, wie man XML Dokumente parst. Ich habe für meinen Teil nur Erfahrung mit DOM.
Aber wie Marcinek schon gesagt hat, ist dies hier eigentlich das falsche Forum. In einem PHP Forum wird dir sicherlich viel kompetenter geholfen werden können.


----------

