[英]Getting an xml element value using xpath
我正在解析Google xml搜索結果供稿中的xml結果,並且正在努力從特定DataObject
元素中獲取圖像值
<DataObject type="cse_thumbnail">
<Attribute name="width" value="395"/>
<Attribute name="height" value="127"/>
<Attribute name="src" value="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcTZMcIvtnauaF5yVIAcxEsJgj-r78xsi32b18X5tuMamDZIVWNBTXoB-g"/>
</DataObject>
這是我當前的循環
foreach ($xml->RES->R as $item) {
$image = $item->PageMap->DataObject[4]->Attribute[2]['value'];
}
我遇到的問題是我嘗試獲取的圖像並不總是在第4個DataObject
。 xml搜索結果供稿只能包含一個或多個DataObject elements.
因此,我做了一些閱讀,發現xpath將使我有能力針對正確的DataObject
寬度, type
的屬性和cse_thumbnail
的值進行cse_thumbnail
,而不管父元素( <PageMap>
)中存在多少個DataOject。
這就是我卡住的地方。
foreach ($xml->RES->R as $item) {
$image = $item->PageMap->xpath('DataObject[@type="cse_thumbnail"]/Attribute[@name="src"]/@value');
}
$image
變量以數組形式返回。 我以為它將從<Attribute>
其中name="src"
返回值。
array(1) { [0]=> object(SimpleXMLElement)#14 (1) { ["@attributes"]=> array(1) { ["value"]=> string(110) "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcTZMcIvtnauaF5yVIAcxEsJgj-r78xsi32b18X5tuMamDZIVWNBTXoB-g" } } }
誰能告訴我我在做什么錯
謝謝
您的xPath是正確的,您可以在線檢查它,例如: http : //www.xpathtester.com/xpath
但是PageMap返回一個數組,請在此處檢查此線程以尋求可能的解決方案: PHP Xpath提取屬性名稱為“ author”的節點的值
就像是:
foreach ($xml->RES->R as $item) {
$images = $item->PageMap->xpath('DataObject[@type="cse_thumbnail"]/Attribute[@name="src"]/@value');
if (count($images)) {
$image = (string) $images[0]['value'];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.