示例#1
0
    /**
     * @see PCStorage::load()
     */
    public function load($uri) {
        try {
            $this->checkURI($uri);
            if(!file_exists($uri)) {
                //Do not fail, if file doesn't exist.
                return;
            }
            if(!@$this->dom->load($uri)) {
                throw new Exception("Failed to parse $uri!");
            }

            $xpath = new DOMXpath($this->dom);
            foreach($xpath->query('/klarna/estore') as $estore) {
                $eid = $estore->getAttribute('id');

                foreach($xpath->query('pclass', $estore) as $node) {
                    $pclass = new KlarnaPClass();
                    $pclass->setId($node->getAttribute('pid'));
                    $pclass->setType($node->getAttribute('type'));
                    $pclass->setEid($eid);
                    $pclass->setDescription($xpath->query('description', $node)->item(0)->textContent);
                    $pclass->setMonths($xpath->query('months', $node)->item(0)->textContent);
                    $pclass->setStartFee($xpath->query('startfee', $node)->item(0)->textContent);
                    $pclass->setInvoiceFee($xpath->query('invoicefee', $node)->item(0)->textContent);
                    $pclass->setInterestRate($xpath->query('interestrate', $node)->item(0)->textContent);
                    $pclass->setMinAmount($xpath->query('minamount', $node)->item(0)->textContent);
                    $pclass->setCountry($xpath->query('country', $node)->item(0)->textContent);
                    $pclass->setExpire($xpath->query('expire', $node)->item(0)->textContent);

                    $this->addPClass($pclass);
                }
            }
        }
        catch(Exception $e) {
            throw new KlarnaException("Error in " . __METHOD__ . ": " .$e->getMessage());
        }
    }