Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 23-03-2005, 10:22
st@tic
 Registrierter Benutzer
Links : Onlinestatus : st@tic ist offline
Registriert seit: Mar 2004
Beiträge: 344
st@tic ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Expat] Inhalte der Tags Attributen zuweisen...

sorry das ich schon wieder posten muss.
mir ist die art und weise wie expat arbeitet noch nicht ganz klar

es gibt drei funktionen startElement, endElement und cdata
bei den ersten beiden kann man via if oder switch (geht das??) unterscheiden welcher tag es ist und bestimmte aktionen ausführen richtig?
und wann kommt die funktion für text dran?
kommt die erst danach dran wenn start element einen tag gefunden hat und springt dann wieder zurück zum start element oder so?

hab nämlich mit dem beispiel da unten mal was zusammen gebastelt was natürlich nicht funktioniert

Code:
 
<?xml version="1.0" encoding="UTF-8" ?> 
<RootElement>
<Item>
    <Element1>Text</Element1>
    <Element2>Text</Element2>
    <Element3>Text</Element3>
    <Element4>Text</Element4>
    <SubItems>
        <SubItem>
            <Element1>Text</Element1>
            <Element2>Text</Element2>
            <Element5>Text</Element5>
        </SubItem>
        <SubItem>
            <Element1>Text</Element1>
            <Element2>Text</Element2>
            <Element5>Text</Element5>
        </SubItem>
    </SubItems>
</Item>
<Item>
    <Element1>Text</Element1>
    <Element2>Text</Element2>
    <Element3>Text</Element3>
    <Element4>Text</Element4>
</Item>
</RootElement>
PHP-Code:
function startElement($parser$element_name$element_attribute
{
    
//global $ausgabe;
    
    
global $SingleItem;
    global 
$SingleSubItem;
    global 
$strInhalt;

    
//Überprüfung des Elementnames
    
switch(strtolower($element_name))
    {
        case 
'item':                     $SingleItem = new Item();
                                        break;
        case 
'bugnote':                 $SingleSubItem = new SubItem();
                                        break;
        case 
'setElement1':                $SingleItem->setElement1($strInhalt);
                                        break;
        case 
'setElement2':                $SingleItem->setElement2($strInhalt);
                                        break;
        case 
'setElement3':                $SingleItem->setElement3($strInhalt);
                                        break;
        case 
'setElement4':                $SingleItem->setElement4($strInhalt);
                                        break;    
    }
}
function 
endElement($parser$element_name
{    
    global 
$SingleItem;
    global 
$SingleSubItem;
    global 
$aSubItems;
    global 
$aItems;
    
    switch(
strtolower($element_name))
    {
        case 
'item':    $aItems[] = $SingleItem;
                        break;
        case 
'subitem':    $aSubItems[] = $SingleSubItem;
                        break;    
    }
}
function 
cdata($parser$element_inhalt
{
    global 
$strInhalt;
    
$strInhalt $element_inhalt;

ich hab mir dabei gedacht wenn ein tag item oder subitem gefunden wird soll ein neues objekt instanziert werden und beim schließenden tag einem array zugefügt werden.
und wenn ein anderer tag endeckt wird (wo dann ein text drin steht) soll dieser dann dem entsprechenden attribut meines objektes zugewiesen werden....
Mit Zitat antworten