webForumDet fria alternativet

Strukturhjälp med klassindelning

PHP

30 svar · 785 visningar · startad av SDCd · sida 2 av 2

Frågan, av SDCd

Har nu knåpat ihop ett skript som läser in en XML-fil, uppdaterar med ny info och skriver tillbaka det till filen. Tänkte ge mig in på lite snygg uppdelning av XML-funktioner, och skulle behöva lite styrning i mitt tänkande. Det jag tänkt mig är att ha skapa ett skript för att uppdatera en XML-fil. Jag hade tänkt mig att lägga själva parserfunktionen i en egen inkluderingsfil för att kunna anvä

Läs frågan i sin helhet →
Medlem sedan jan. 2001795 inlägg
#21

Är jag helt ute och cyklar om jag påstår att raden

createXML( array_pop( $xmlTagList ), $xmlPre . "\t" );

i funktionen createXML(), borde vara

$this->createXML( array_pop( $xmlTagList ), $xmlPre . "\t" );

:)

Medlem sedan jan. 2001795 inlägg
#22

Det verkar som funktionen createXML() innehåller lite av båda versionerna av koduppbyggnad.
Här:

foreach( $theRootTag->getAttributes() as $key => $value ) {
	array_push( $xmlAttributes, strtolower( $key . "=\"" . $value . "\"" ) );
}

används foreach, men det som returneras av getAttributes() är, som du påpekar i ett inlägg högre upp, en lista innehållande objekt:

spinxmlattributelist Object ( [attributeList] => Array ( [0] => spinxmlattribute Object
 ( [attrName] => AttributNamn [attrValue] => AttributVärde ) ) )

Här brister mina kunskaper. Hur gör jag för att komma åt det som foreach satsen ovan?

Medlem sedan mars 20007 896 inlägg
#23

Återkommer under veckan, är för trött i huvudet just nu... Bara så du vet att jag inte struntar i dig. :)

Medlem sedan jan. 2001795 inlägg
#24

Ingen fara, har själv mycket att göra med "riktigt" jobb. :)

Medlem sedan mars 20007 896 inlägg
#25

Då försöker vi igen... Jag har endast ändrat i SPiNXML.txt, där jag lagt till lite metoder för hanteringen av attribut plus ändrat lite där du påpekat fel.

MvH,

Medlem sedan jan. 2001795 inlägg
#26

Då ska vi se, har satt tänderna i din nya fil och kommit fram till följande:

I klassen SPinXMLAttributeList har du skapat en funktion som heter get().
Där står:

if( count( $this->attributeList ) > $attributeGetPointer )

Det borde vara:

if( count( $this->attributeList ) > $this->attributeGetPointer )

Samma klass, funktionen apply( $tagAttributeName, $tagAttributeValue )

Där står:

$array_push( $this->attributeList, $xmlAttribute );

Det borde vara:

array_push( $this->attributeList, $xmlAttribute );

Sen en sak som har genererat ett fel i varje fil vi bollat är raden:

$found ? return $result : return false;

Om jag däremot gör om denna till:

if($found)
	return $result;
else
	return false;

fungerar det utmärkt.

Nu till ett fel som jag går bet på än så länge men jag slänger upp det här eftersom jag inte vet om jag är ledig när du har permis.
Jag får felmeddelandet:

Fatal error: Call to a member function on a non-object

på raden:

while( ( $tagAttribute = $this->tagAttributeList->get() ) != false )

i funktionen getAttributesAsArray() i klassen SPiNXMLTag

Får inte till detta på nåt vettigt sätt.
Sen vill jag bara passa på att tacka för ditt fantastiska tålamod här!

Medlem sedan jan. 2001795 inlägg
#27

Jag förstår inte riktigt din tanke med struktur och hierarkiuppbyggnaden av XML-filen.
Vad jag inte kan få till är hur du tänkt när du i testpiloten skapar ett nytt objekt:

$xmlTag = new SPiNXMLTag();
$xmlTag->start();
$xmlTag->setName( "ROTTAG" );
$xmlTag->setAttribute( "ROTTAG_AttributNamn", "ROTTAG_AttributVärde" );

Sedan skapar du ett nytt objekt:

$xmlSubTag = new SPiNXMLTag();
$xmlSubTag->start();
$xmlSubTag->setName( "UNDERTAGG_1" );
$xmlSubTag->addContent( "UNDERTAG_1_DATA" );
$xmlSubTag->setAttribute( "ATTRIBUTNAMN_1", "ATTRIBUTVÄRDE_1" )

Därefter lägger du till denna med:

$xmlTag->addTag( $xmlSubTag );

När jag läser av variabeln $xmlTag ser innehållet ut så här:
/r Lägger koden i en separat fil för att inte göra tråden oläslig. Se inlägg nedan.

Medlem sedan jan. 2001795 inlägg
#28

Här är filen med värdet på variabeln $xmlTag.

Medlem sedan jan. 2001795 inlägg
#29

Vad är din tanke med att skapa klassen SPiNXMLAttributeList?

Medlem sedan mars 20007 896 inlägg
#30

OK, nu har jag hittat hit igen. Eftersom att jag är utan dator varannan vecka, har jag helt tappat tråden i den här tråden ( ;) )...

Jag ska sätta in mig i problemet under morgonkväll, om du har något problem kvar. Jag har missat den här tråden de senaste veckorna, ser jag. :o

Vad nytt har hänt?

Medlem sedan jan. 2001795 inlägg
#31

Inte mycket, tyvärr. Har haft mycket jobb. Det nya är att jag tidigare trodde att en tag bara kunde ha ett attribut(läste galet i en XMLdokumentation), därav min tidigare fråga om SPiNXMLAttributeList.
De tidigare inläggen är fortfarande aktuella. Tänkte försöka ta tag i detta i helgen.

267 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)