XML Aufbau?

wachteldonk

Erfahrenes Mitglied
ich habe ein Array mit Tageswerten udn Wochenwerte. Wie bau ich das auf?

Code:
<tageswerte>
  <2008-01-02>120.20</2008-01-01>
  <2008-01-02>120.20</2008-01-02>
  <2008-01-02>120.20</2008-01-02>
   ....
<Tageswerte/>
<Wochenwerte>
  s.o.
</Wochenwerte>

Istd as so richtig oder wie bau ich das auf? Anscheined werden die Werte mit dem datum nicht richtig erkannt?!
 
Also als erstes brauchst du einmal EIn Wurzelelement in dem deine XML Struktur sitzt.
Die Wahl der Knotennamen ist eher schlecht da sie variabel sind. Knotennamen sollten immer eindeutig sein. Deine ändern sich aber mit dem Datum. Ich würde das eher so aufbauen.

Code:
<werte>
 <tageswerte>
  <tageswert datum="2008-01-01">120,20</tageswert>
  <tageswert datum="2008-01-01">120,20</tageswert>
 </tageswerte/
 <wochenwerte>
  <wochenwert woche="1" jahr="2008" >120,20</wochenwert>
  <wochenwert woche="1" jahr="2008" >120,20</wochenwert>
 </wochenwerte>
</werte>
Gruß Benny
 
Hallo,

ich versuch es zu parsen mit dieser Klasse aber es kommt nix dabei raus:( Das Array ist immer leer:(

Code:
class XMLParser
	{
    /**
     * @var string
     * @access protected
     */
    var $current = '';

    /**
     * @var boolean
     * @access protected
     */
    var $found = false;

    /**
     * @var array
     * @access protected
     */
    var $result = array();

    /**
     * @access public
     */
    function XMLParser()
    	{
        $this->__construct();
    	}

    /**
     * @access 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');
    	}

    /**
     * @param  string  $xml_data
     * @access public
     */
    function parse($xml_data)
    	{
        xml_parse($this->parser, $xml_data);
        xml_parser_free($this->parser);
        return $this->result;
    	}

    /**
     * @param  object  $parser
     * @param  string  $name
     * @param  array   $attribs
     * @access protected
     */
    function startElement($parser, $name, $attribs) 
		{
        $this->current = $name;
        if ($this->current == 'ENTRY') 
			{
            $this->found = true;
            $this->result[count($this->result)] = array();
        	} 
		elseif ($this->found and $this->current == 'LINK') 
			{
            $this->result[count($this->result) - 1][$attribs['REL']] = $attribs['HREF'];
        	}
    	}

    /**
     * @param  object  $parser
     * @param  string  $name
     * @access protected
     */
    function endElement($parser, $name) 
		{
        if ($name == 'ENTRY') 
			{
            $this->found = false;
        	}
    	}

    /**
     * @param  object  $parser
     * @param  string  $data
     * @access protected
     */
    function characterData($parser, $data) 
		{
        if ($this->found) 
			{
            $this->result[count($this->result) - 1][strtolower($this->current)] = $data;
        	}
    	}
	}
 
Zurück