簡體   English   中英

使用xpath獲取xml元素值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM