2017-06-03 1 views
0

私は以下を理解する助けが必要です:PHPでsimplexmlを使ってXMLからアイテムのhref値を取得するには?

私はPHPとsimplexmlでXMLファイルを開きます。で動作します

<?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> 

タイトルへのアクセス: は、今私は、名前空間なしで値を取得したい

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

しかし、どのようにそれは得ることが可能であるパッケージ - > manifest->アイテム - > HREFどこIDは - >カバーですか?だから私は "cover1.jpg"をエコーすることができますか?

そう...

を私はいくつかの(XPathのような)方法と

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

のようなものを試してみましたしかし、私は常にNULLを取得し、3つの要素(パッケージ、マニフェスト、アイテム)および属性がありますカバーとhrefという名前が付いていますが、私はしばらくこのことにこだわり、助けが必要です。

ありがとうございます!

答えて

0

あなたが使用することができるはず...

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

$項目は、属性ID =カバーを持っている文書内のすべての項目の配列になります。したがって、それらをループする必要があるかもしれません。

関連する問題