Mathias Brodala: unterschied zw simplexmlelement und xmlparser?

Beitrag lesen

Hallo simon.

bei den dom funktionen steht ja viele sachen, DomDocument, DomComment usw. ich denke mal, domdocument ist für das gesamte dokument und dann muss ich für die einzelnen elemente immer was anderes nehmen?

Nenne es hier besser „Objekte“, da der Begriff „Elemente“ bereits in XML vergeben ist. (<foo></foo> wäre ein Element, <bar/> ebenso.)

wäre super wenn du mir mal einen beispiel posten würdest mit code für so eine einfache xml datei.

Siehe dazu DOMDocument.

und dann mal als beispiel wie man da mit diesen dom funktionen was ausliest

Dazu dient die nodeValue-Eigenschaft des DOMNode-Objekts.

und löscht

Mit Hilfe der removeChild-Methode.

und verändert.

Dies hängt davon ab, was du zu ändern gedenkst. Elemente werden zuerst erzeugt und danach ins Dokument eingehängt. Attribute dagegen werden direkt an ein bestehendes oder erzeugtes Element gekoppelt. Elementinhalte kannst du ganz einfach über die bereits genannte nodeValue-Eigenschaft bearbeiten.

Zusammenfassend hier nun einmal ein Beispiel:

<?php  
  
error_reporting(E_ALL);  
header('content-type: text/plain; charset=utf-8');  
  
$str_doc = '<?xml version="1.0" encoding="utf-8"?>  
<wurzel>  
  <kind attribut="wert">Text</kind>  
</wurzel>';  
  
// Dokumentenobjekt initialisieren  
$obj_doc = new DOMDocument('1.0', 'utf-8');  
// Saubere Formatierung  
$obj_doc->[link:http://de.php.net/manual/de/ref.dom.php#dom.class.domdocument.properties@title=preserveWhiteSpace] = false;  
$obj_doc->formatOutput = true;  
// Obigen String ins Objekt laden  
$obj_doc->loadXML($str_doc);  
  
// Neues Elementobjekt erzeugen und Attributwert setzen  
$obj_child = $obj_doc->createElement('kind', 'Anderer Text');  
$obj_child->setAttribute('attribut', 'anderer wert');  
$obj_doc->documentElement->appendChild($obj_child);  
  
// Erstes Objekt vom Elementnamen „kind“ holen  
$obj_firstchild =  $obj_doc->[link:http://de.php.net/manual/de/function.dom-domdocument-getelementsbytagname.php@title=getElementsByTagName]('kind')->item(0);  
// Wert des Attributes „attribut“ ausgeben  
echo 'Attributwert des ersten Elements: „',  
  $obj_firstchild->[link:http://de.php.net/manual/de/function.dom-domelement-getattribute.php@title=getAttribute]('attribut'), "“\n\n"; // „wert“  
  
// Erstes Objekt aus dem Dokument entfernen  
$obj_firstchild->[link:http://de.php.net/manual/de/ref.dom.php#dom.class.domnode.properties@title=parentNode]->removeChild($obj_firstchild);  
  
echo $obj_doc->saveXML();  
/*  
<?xml version="1.0" encoding="utf-8"?>  
<wurzel>  
  <kind attribut="anderer wert">Anderer Text</kind>  
</wurzel>  
*/  
  
?>

Es ist nicht schlimm wenn dir die verschiedenen Eigenschaften und Methoden jetzt noch kaum etwas sagen; wenn du dich einmal mit DOM richtig befasst hast, wirst du es sehr zu schätzen wissen.

Hallo simon.

Und bitte zitiere vernünftig.

Einen schönen Dienstag noch.

Gruß, Mathias

--
ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
debian/rules