2017-06-03 6 views
0

Ich brauche Hilfe, um folgendes zu verstehen:Wie Artikel Href-Wert von XML mit Simplex XML in PHP erhalten?

Ich öffne eine XML-Datei mit PHP und Simplexml. Jetzt möchte ich ohne einen Namensraum einen Wert erhalten:

<?xml version='1.0' encoding='utf-8'?> 
<package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="uuid_id"> 
    <metadata 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:opf="http://www.idpf.org/2007/opf" 
     xmlns:dcterms="http://purl.org/dc/terms/" 
     xmlns:calibre="http://calibre.kovidgoyal.net/2009/metadata" 
     xmlns:dc="http://purl.org/dc/elements/1.1/"> 
     <meta name="calibre:series_index" content="4" /> 
     <meta name="calibre:timestamp" content="2013-05-09T10:54:56+00:00" /> 
     <dc:title>TESTTITLE</dc:title> 
    </metadata> 
    <manifest> 
     <item href="cover1.jpeg" id="cover" media-type="image/jpeg" /> 
    </manifest> 
</package> 

den Titel Zugriff funktioniert mit:

$opf = simplexml_load_file('tmp/'.$subtmp.'/content.opf'); 
    $namespaces = $opf->getNameSpaces(true); 
    $dc = $opf->metadata->children($namespaces['dc']); 
    echo $dc->title; 

Aber wie ist es möglich, Paket-> manifest-> item-> href erhalten Wo ID ist -> abdecken? Damit ich "cover1.jpg" wiedergeben kann?

versuchte ich mehrere Möglichkeiten (wie XPath) und Dinge wie

$cover = $opf->package->manifest->item->cover[0]['href']; 

Aber ich immer NULL bekommen ...

So gibt es 3 Elemente (Paket, manifestieren, Artikel) und eine Attribute benanntes Cover und href, aber ich blieb eine Weile hier und brauche Hilfe.

Vielen Dank im Voraus!

Antwort

0

Sie sollten ...

$opf->registerXPathNamespace("opf","http://www.idpf.org/2007/opf"); 
$item = $opf->xpath('//opf:item[@id="cover"]'); 
echo $item[0]['href']); 

$ Artikel verwenden können, wird ein Array von jedem Punkt in dem Dokument sein, die das Attribut id = Abdeckung hat. Sie müssen sie also möglicherweise durchlaufen.