一个接口,能得到返回的xml文件,如何提取有用的内容?
接口调用后,$result= 能得到以下内容:
stdClass Object
(
[out] =>
)
以前做这直接读取 xml的,可这种带了一个 stdClass Object( [out] =>
不知道应该如何读到各节点内容了
回复讨论(解决方案)
红色代码 是由 print_r($result);得到的, 如果换成echo $result;就会出错 Catchable fatal error: Object of class stdClass could not be converted to string in
如果你对对象操作不熟悉,可以先转换为数组,这样会方便一些。
你获取的对象很简单, $result->out 就是这个XML字符串,若是想提取其中的内容,可以尝试字符串提取,或者解析XML为对象再转数组(推荐)。
http://www.php.net/manual/zh/language.oop5.properties.php
直接打印
echo $result->out;
作为xml解析
$xml = simplexml_load_string($result->out);
print_r($xml);
SimpleXMLElement Object( [flights] => SimpleXMLElement Object ( [flight] => SimpleXMLElement Object ( [@attributes] => Array ( [orgCity] => SHA [departTerm] => T2 [dstCity] => CAN [arrivalTerm] => -- [airComp] => MU [flightno] => MU5307 [planeType] => 320 [startTime] => 2012-07-20 07:30 [endTime] => 2013-07-20 09:50 [stopNumber] => 0 [mealCode] => S ) [cabins] => SimpleXMLElement Object ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [cabinCode] => Y [cabinType] => 0 [cabinDiscount] => 100 [cabinName] => 经济舱 [cabinSales] => A [ibePrice] => 1280 [encryptString] => 79fccacuigjjdskf ) ) ) [cabin] => SimpleXMLElement Object ( [@attributes] => Array ( [cabinCode] => A [cabinType] => 0 [cabinDiscount] => 250 [cabinName] => 头等折扣舱 [cabinSales] => A [ibePrice] => 2830 [encryptString] => 1c9cc629e7f7b1a ) ) ) ) [is_success] => T)
如果你对对象操作不熟悉,可以先转换为数组,这样会方便一些。
你获取的对象很简单, $result->out 就是这个XML字符串,若是想提取其中的内容,可以尝试字符串提取,或者解析XML为对象再转数组(推荐)。
PHP code?1http://www.php.net/manual/zh/language.oop5.properties.php
请问如何解析XML为对象再转数组
用DOMDocument的方法来解析吧
$xml = simplexml_load_string($result->out);// 转换对象所有属性为数组function obj2arr($obj){ $arr = get_object_vars($obj); foreach($arr as &$child){ is_object($child) && ( $child = obj2arr($child) ); } return $arr;}$data = obj2arr($xml);
接着你就可以用
$data['flights']['flight']['cabin']['@attributes']['cabinName'];
得到 头等折扣舱
当然,不转换为数组也是可以直接操作的,不过这就需要考验你的基本功
PHP code?1234567891011$xml = simplexml_load_string($result->out);// 转换对象所有属性为数组function
显示这一句出错:
simplexml_load_string() [function.simplexml-load-string]: input conversion failed due to input error
你的 php 小于 5.3
只能识别 utf-8 的 xml
所以报错
有什么办法没?
$result->out = str_replace('encoding="GB2312"', 'encoding="utf-8"', iconv('gbk', 'utf-8', $result->out));
echo $data['flights']['flight']['cabin']['@attributes']['cabinName'];
显示不出来任何数据,怎么回事

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

在PHPStorm中如何進行CLI模式的調試?在使用PHPStorm進行開發時,有時我們需要在命令行界面(CLI)模式下調試PHP�...

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...
