Hallo Leute
Schonwieder ich. Hab mich jetzt ein wenig über die XML-Parsing Methoden schlau gemacht und hab ein kleines Script geschrieben, wie ich mein XML-File wunderbar parsen will. Das Script werden einige schon gesehen haben, wenn sie sich mit XML-Parsing beschäftigt haben. Ist relativ gängig:
Das XML-File sieht folgendermassen aus:
Nun fehlt es mir aber gänzlich an Ideen und Erfahrung, wie ich unter das <Desc1> ein <Desc2> mit dem selben Text "Das ist eine Beschreibung" bekomme. Gibts dafür geeignete Funktionen oder muss ich das File immer wieder neu schreiben? Man muss mir hier keine fertigen Lösungen präsentieren. Bin froh um jeden Denkanstoss.
Gruss Igäl
Schonwieder ich. Hab mich jetzt ein wenig über die XML-Parsing Methoden schlau gemacht und hab ein kleines Script geschrieben, wie ich mein XML-File wunderbar parsen will. Das Script werden einige schon gesehen haben, wenn sie sich mit XML-Parsing beschäftigt haben. Ist relativ gängig:
PHP-Code:
<?php
error_reporting(E_ALL);
/********************************************************/
class Artikel {
protected $parser;
protected $elemArr = array();
public function __construct() {
$this->parser = xml_parser_create();
xml_set_object($this->parser, $this);
xml_set_element_handler($this->parser, 'startElement', 'endElement');
xml_set_character_data_handler($this->parser, 'characterData');
}
public function __destruct() {
xml_parser_free($this->parser);
}
public function readCatalog($catalog) {
xml_parse($this->parser, file_get_contents($catalog), true);
}
protected function startElement($parser, $element, $attributes) {
array_push($this->elemArr, $element);
}
protected function endElement($parser, $element) {
array_pop($this->elemArr);
}
protected function characterData($parser, $cdata) {
switch($this->elemArr[sizeof($this->elemArr)-1]) {
case "DESC1": $this->insert_more_data($cdata); //Hier wird die Methode aufgerufen, mit welcher ich einen
break; //weiteren Wertesatz mit dem selben Wert einfügen möchte.
}
}
function insert_more_data($cdata) {
}
}
/********************************************************/
/********************************************************/
$artikel = new Artikel;
$artikel->readCatalog("test.xml");
/********************************************************/
/********************************************************/
?>
Code:
<?xml version="1.0" encoding="ISO-8859-1"?> <Test> <Id>1</Id> <Title>Titel 1</Title> <Desc1>Das ist eine Beschreibung</Desc1> </Test>
Gruss Igäl
Kommentar