Allereerst wil ik zeggen, sorry als mijn Nederlands slecht is, maar ik heb zo een 5/6 jaar niet in NLs gepraat.
Ok, dus ik heb rond gevraagt op paar engels sites (stackoverflow, phpfreaks.com), en volgens mij weet niemand het antwoord zover. Ik heb een P3T (PS3 theme) extractor, gebasseerd op een python versie (port), maar ik krijg dus een fout PHP fout. Je kan de script vinden hiero: http://pastebin.com/bRGL9KFh .

De fout die ik krijg is:
Warning: DOMElement::setAttribute() [domelement.setattribute]: Couldn't fetch P3TElement in D:\www\p3textract\extract.php on line 115


Kan iemand alstublieft mij helpen, want ik kan er niks over vinden.

Alvast bedankt.

Hosh

PS: deze classen lezen een .p3t bestand (playstation 3 themes) en pakken de images en de XML ervan uit. Hij is nog niet af, maar zo ver hoort het op zn minst alle images ervanuit te halen (de XML extracter is er nog niet).

PPS: de python versie kan je hier vinden: http://p3textractor.googlecode.com/svn/trunk/p3textractor.py

EDIT: ik had per ongeluk een oude versie hier gelinkt. link geupdate met nieuwe versie
Je schrijft prima nl. :)
Jordi kroon op 25/03/2011 07:31:25

Je schrijft prima nl. :)


Wat een toegevoegde waarde.

Ontopic:
Waar staat de setAttribute function eigenlijk?
Kan je je fout reduceren tot de meest eenvoudige code? Dan kunnen we er iets zinnigs over zeggen. Nu is het een speld in een hooiberg...
@jordi, Dank je :)

@Joris, setAttribute() is interitted van de class DOMElement, dit is een PHP class, meer kan je vinden hier: http://uk2.php.net/manual/en/class.domelement.php


@Pim, sorry, het meest zinnig code is:

<?php

class P3TElement extends DOMElement {
public $attribs = array();
public function add_attribute($attr) {
if ($attr->type == 6) {
$this->has_file = 1;
}
$this->attribs[$attr->name] = $attr;
if ($attr->name == "size") {
return;
}
if ($attr->name && $attr->value) {
// de volgende lijn is 115
$this->setAttribute((string)$attr->name, (string)$attr->value);
}
}
}

class P3TAttribute{
public $type = 0;
public $name = "";
public $value = 0;
}


$ele = new P3TElement($h);
$attr = new P3TAttribute();
$attr->parse($attr_bin, $h, $f);
$ele->add_attribute($attr);
?>


$attr->parse() probeert PHP's unpack() te gebruiken om de .p3t bestand te lezen en stukjes op te slaan
$h bevat random data
$f is een fopen('file.p3t', 'rb') handle.
$attr_bin returnt deze array wanneer ik unpack('N3int/x4fill', $attr_bin); gebruik:

array
  'int1' => int 21
  'int2' => int 3
  'int3' => int 29

Reageren