Ä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" );
:)
30 svar · 785 visningar · startad av SDCd · sida 2 av 2
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 →Ä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" );
:)
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?
Återkommer under veckan, är för trött i huvudet just nu... Bara så du vet att jag inte struntar i dig. :)
Ingen fara, har själv mycket att göra med "riktigt" jobb. :)
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,
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!
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.
Här är filen med värdet på variabeln $xmlTag.
Vad är din tanke med att skapa klassen SPiNXMLAttributeList?
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?
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.