# XML Datei mit PHP editieren



## tetsuo666 (9. Juli 2007)

Hallo liebe Tutorials-Gemeinde,

Versuche gerade die *Flash-Newsblock Component* (Link) an meine Bedürfnisse anzupassen und scheitere kläglich.

Ich habe eine XML Datei die folgendermaßen aufgebaut ist:

```
<?xml version='1.0' encoding='iso-8859-1'?>
<newsblock>
<news date=''><![CDATA[<font size="12" weight="bold" face="Helvetica, Geneva, Arial, SunSans-Regular, sans-serif"><b>Überschrift 1</b><br>Text zur Überschrift 1.</font>]]>
</news>
<news date=''><![CDATA[<font size="12" weight="bold" face="Helvetica, Geneva, Arial, SunSans-Regular, sans-serif"><b>Überschrift 2</b><br>Text zur Überschrift 2.</font>]]>
</news>
<news date=''><![CDATA[<font size="12" weight="bold" face="Helvetica, Geneva, Arial, SunSans-Regular, sans-serif"><b>Überschrift 3</b><br>Text zur Überschrift 3.</font>]]>
</news>
<news date=''><![CDATA[<font size="12" weight="bold" face="Helvetica, Geneva, Arial, SunSans-Regular, sans-serif"><b>Überschrift 4</b><br>Text zur Überschrift 4.</font>]]>
</news>
<news date=''><![CDATA[<font size="12" weight="bold" face="Helvetica, Geneva, Arial, SunSans-Regular, sans-serif"><b>Überschrift 5</b><br>Text zur Überschrift 5.</font>]]>
</news>
<news date=''><![CDATA[<font size="12" weight="bold" face="Helvetica, Geneva, Arial, SunSans-Regular, sans-serif"><b>Überschrift 6</b><br>Text zur Überschrift 6.</font>]]>
</news>
</newsblock>
```

Ausgelesen wird diese über oben genannte Flashdatei.
Beispiel für die Ausgabe!

Nun möchte ich aber die XML Datei online editieren können. Ich habe leider überhaupt keinen Schimmer wie ich das machen soll. Was mich irritiert ist der "=''><![CDATA[" Eintrag in der XML. Wie schaffe ich es ein bequemes Online Formular (mit PHP) zu erstellen um die Einträge editieren zu können?

Ein weiteres Problem ist die Kodierung? Wie Ihr seht werden Umlaute falsch dargestellt. Ob ich nun UTF-8 oder iso-8859-1 nehme..

Wer kann mir helfen dabei helfen daß ich meine XML online editieren (Laden,  Ändern, Speichern) kann  

Viel Dank,
Tetsuo666

Link zur XML: Hier
Link zur SWF: Hier
Link zur Ausgabe: Hier


----------



## unknown_fool (9. Juli 2007)

> Wer kann mir helfen dabei helfen daß ich meine XML online editieren (Laden, Ändern, Speichern) kann


Forensuche ist hilfreich 
http://www.tutorials.de/forum/php/280268-dateien-bearbeiten.html


----------



## tetsuo666 (9. Juli 2007)

@unknown fool
Dass ich die Forensuche benutzen kann musst Du mir schon noch zutrauen.
Es gibt auch eine Vielzahl an Schnippsel die sich mit meinem Problem mehr oder weniger beschäftigen, jedoch bringt mich das mit dem "<![CDATA["" Problem nicht weiter...


----------



## Iches (9. Juli 2007)

Wie man XML Editiert steht hier: http://www.tutorials.de/forum/php-t...infuehrung-xml-mittels-simplexml-und-dom.html

Und das CDATA heißt einfach nur das in dem kommenden Bereich Markup-Zeichen vorkommen, die aber nicht interpretiert werden.


----------



## tetsuo666 (11. Juli 2007)

Hallo,

nach stundenlangem Kopfzerbrechen bin ich noch kaum einen Schritt weiter.

Ich habe inzwischen rausgefunden daß auf der Webseite, auf der das Skript laufen soll, PHP 4.3.7 läuft. So weit so schlecht. Denn das oben erwähnte Tutorial benötigt PHP5. PHP4 kommt mit "simplexml_load_file($filename);" nicht klar.

Ich muss wohl daher das XML mit DOM schreiben. *Eine anscheinend narrensichere Anleitung funktioniert bei mir auch nicht.* 

Die XML:
_An XML book list example:_

```
<books>
  <book>
  <author>Jack Herrington</author>
  <title>PHP Hacks</title>
  <publisher>O'Reilly</publisher>
  </book>
  <book>
  <author>Jack Herrington</author>
  <title>Podcasting Hacks</title>
  <publisher>O'Reilly</publisher>
  </book>
  </books>
```

Und die PHP-Datei:
_Writing books XML with the DOM:_

```
<?php
  $books = array();
  $books [] = array(
  'title' => 'PHP Hacks',
  'author' => 'Jack Herrington',
  'publisher' => "O'Reilly"
  );
  $books [] = array(
  'title' => 'Podcasting Hacks',
  'author' => 'Jack Herrington',
  'publisher' => "O'Reilly"
  );
  
  $doc = new DOMDocument();
  $doc->formatOutput = true;
  
  $r = $doc->createElement( "books" );
  $doc->appendChild( $r );
  
  foreach( $books as $book )
  {
  $b = $doc->createElement( "book" );
  
  $author = $doc->createElement( "author" );
  $author->appendChild(
  $doc->createTextNode( $book['author'] )
  );
  $b->appendChild( $author );
  
  $title = $doc->createElement( "title" );
  $title->appendChild(
  $doc->createTextNode( $book['title'] )
  );
  $b->appendChild( $title );
  
  $publisher = $doc->createElement( "publisher" );
  $publisher->appendChild(
  $doc->createTextNode( $book['publisher'] )
  );
  $b->appendChild( $publisher );
  
  $r->appendChild( $b );
  }
  
  echo $doc->saveXML();
  ?>
```

Es kommt diese Fehlermeldung!

```
Fatal error: Call to undefined method: domdocument->createelement() in /homepages/36/d85357770/htdocs/news/books.php on line 17
```

Bitte liebe Leute, es ist wirklich nicht so daß ich irgendwelche Schnippsel abstauben möchte und faul auf meinem A* sitze. Ich gebe mir größte Mühe mich einzulesen, http://de.php.net/ durchzuackern und die Basics zu verstehen. Ich bin auch schon so weit daß ich XML lesen kann, und schreiben kann (wenn auch nicht in der Formatierung die ich gerne hätte!). Aber ich schaffe es nicht ein Skript zusammenzuschustern welches Beides gleichzeitig erledigt! 

<verzweifelt>Bitte habt Erbarmen und helft mir!</verzweifelt>


----------



## Iches (11. Juli 2007)

Mmh bei mir funktioniert es bestens, ich glaube dein PHP 4.3.7 hat nur das alte Dom dabei, deswegen würde ich mal hier http://www.php.net/manual/de/ref.domxml.php nach Lösungen für das Problem suchen bzw. nach anderen Funktionen.

Nachtrag: Oh ich lese gerade, dass man um die DOMXML-Extension nutzen möchte, in der php.ini die DOMXML-Extension ausschalten muss.


----------



## tetsuo666 (11. Juli 2007)

Na Bravo!
Und wie erkläre ich das meinem Hoster 1und1?!


----------

