我正在尝试获取<img>
元素中每个<caption>
和<item>
元素的值,并存储在数组中。
这是我的XML文件:
<?xml version="1.0" encoding="UTF-8" ?>
<gallery>
<item>
<img>/data/images/galeries/mayens/middle/lemontgond.jpg</img>
<caption><![CDATA[<font color="black" size="12"> Le Mont-Gond</font>]]></caption>
</item>
<item>
<img>/data/images/galeries/mayens/middle/AlpagedeLodze1.jpg</img>
<caption><![CDATA[<font color="black" size="12">Alpage de Lodze</font>]]></caption>
</item>
</gallery>
我将XML文件的内容作为字符串获取并创建我的Query对象,然后尝试获取值,但它始终为null或不完全正确,例如我得到Le Mont-Gond]]>
这是不正确的,因为它没有正确删除CDATA标记。</ p>
$content = file_get_contents(__THE_XML_FILE_ABOVE__);
$query = new Query($content);
foreach($query->queryXpath('item') as $item) {
$subXml = $item->ownerDocument->saveXML($item);
$subItem = new Query($subXml);
$resultTitle = $subItem->queryXpath('//caption')->current()->nodeValue;
$resultUrl = $subItem->queryXpath('//img')->current()->nodeValue;
var_dump($resultTitle, $resultUrl); die;
}
返回,不确定为什么它似乎适用于标题而不是img?
string ' Le Mont-Gond]]>' (length=16)
string '' (length=0)
答案 0 :(得分:0)
试试这个 -
$reader = new \Zend\Config\Reader\Xml();
$data = $reader->fromFile(__THE_XML_FILE_ABOVE__);
$items = $data['item'];
foreach($items as $item) {
var_dump(strip_tags($item['caption']), $item['img']);
}
使用您提供的xml文件数据,结果为 -
string ' Le Mont-Gond' (length=13)
string '/data/images/galeries/mayens/middle/lemontgond.jpg' (length=50)
string 'Alpage de Lodze' (length=15)
string '/data/images/galeries/mayens/middle/AlpagedeLodze1.jpg' (length=54)
我希望它有所帮助。如果这不是理想的结果,请告诉我们。
答案 1 :(得分:0)
使用它:
$query = new Query();
$query->setDocumentXML($content);
foreach($query->queryXpath('item') as $item) {
$subXml = $item->ownerDocument->saveXML($item);
$subItem = new Query();
$subItem->setDocumentXML($subXml);
$resultTitle = $subItem->queryXpath('caption')->current()->nodeValue;
$resultUrl = $subItem->queryXpath('img')->current()->nodeValue;
var_dump($resultTitle, $resultUrl); die;
}