php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
[Expat] Inhalte der Tags Attributen zuweisen...


 
st@tic
23-03-2005, 11:22 
 
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


<?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>



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....


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:59 Uhr.