我需要帮助才能理解以下内容:
我用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;
但是怎样才能获得package-&gt; manifest-&gt; item-&gt; href其中ID是 - &gt;覆盖?所以我可以回应&#34; cover1.jpg&#34;?
我尝试了几种方法(比如xpath)和类似
之类的东西$cover = $opf->package->manifest->item->cover[0]['href'];
但我总是得到NULL ......
所以,有3个元素(包,清单,项目)和一个名为cover和href的属性,但我坚持了一段时间并需要帮助。
提前多多感谢!
答案 0 :(得分:0)
你应该可以使用......
$opf->registerXPathNamespace("opf","http://www.idpf.org/2007/opf");
$item = $opf->xpath('//opf:item[@id="cover"]');
echo $item[0]['href']);
$ item将是文档中具有属性id = cover的每个项目的数组。所以你可能需要遍历它们。