亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法獲取嵌套的 SimpleXMLElement 的屬性

無法獲取嵌套的 SimpleXMLElement 的屬性

PHP
慕妹3242003 2023-11-04 20:56:32
顯然我錯過了一些簡單的東西。我有以下 xml 字符串,我使用 simplexml_load_string 解析它:$xmlString = '<root><Title>Heading Text</Title><Image><img src="https://image.com?id=123" alt="alt text" /></Image></root>';$xml = simplexml_load_string($xmlString);但是,我無法訪問圖像內的 img 標簽。我想我會用來$xml->Image[0]->img獲取元素并 $xml->Image[0]->img['src']獲取圖像的 url。但我不斷收到錯誤:嘗試獲取非對象的屬性“img”$xml->Image[0]測試為 SimpleXMLElement 類型,當我print_r()得到:SimpleXMLElement Object (       [img] => SimpleXMLElement Object (                 [@attributes] => Array (       [src] => https://image.com?id=123       [alt] => alt text     )            )  )就像我說的,我知道我錯過了一些非常明顯的東西,所以任何幫助將不勝感激。
查看完整描述

1 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

你是對的,$xml->Image[0]->img['src']會給你屬性,但它會把它作為一個對象src給你。

如果你運行print_r($xml->Image[0]->img['src']);它會向你顯示:

SimpleXMLElement?Object(
????[0]?=>?https://image.com?id=123)

但如果你echo $xml->Image[0]->img['src'];改為運行,它會給你這個:

https://image.com?id=123

原因是SimpleXMLElement 類實現了神奇的重載方法__toString(或其在內部 C 代碼中的等效方法),因此每當您將對象轉換為字符串時,它都會為您提供字符串內容。由于echo始終需要一個字符串,因此它隱式執行此操作,但您可以使用 顯式執行此操作(string),例如:

$imageSrc?=?(string)$xml->Image[0]->img['src'];
var_dump($imageSrc);

(順便說一句,[0]始終是可選的 - 如果您不提供數字,SimpleXML 會假設您想要唯一或第一個具有該名稱的子項,因此、$xml->Image->img['src']和都會給出相同的結果。)$xml->Image[0]->img['src']$xml->Image->img[0]['src']$xml->Image[0]->img[0]['src']


查看完整回答
反對 回復 2023-11-04
  • 1 回答
  • 0 關注
  • 313 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號