2017-06-01 65 views
1

我做查詢Oracle數據庫使用BLOB數據類型打開XML轉換成使用PHP

我要生成一個字符串傳遞作爲參數傳遞給simplexml_load_string功能存儲XML內容的字段的字符串。

我收到的資源類型:

object(OCI-Lob)[111] 
    public 'descriptor' => resource(118, oci8 descriptor) 

並使用此代碼:

$query = "SELECT xmlcontent FROM myxmltable"; 
$stid = oci_parse($conn, $query); 
      oci_execute($stid); 

      $xml = ''; 

      while (($row = oci_fetch_assoc($stid)) != false) { 

       // $xml = simplexml_load_string($row['XML']); 
       $xml = $row['xmlcontent']; 

      } 

      var_dump($xml); 

我如何改變資源爲字符串?

我wanto從對象轉向串的XML是:

<?xml version="1.0" encoding="utf-8"?> 
<VehicleValidation xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <Validation Id="Validation"> 
     <Vehicle> 
      <Year>2017</Year> 
      <Brand>One car brand</Brand> 
     </Vehicle> 

     <Brand> 
      <Info> 
       <Data> 
        <Address> 
        One car brand Address 
        </Address> 
       <Data> 
      </Info> 
     </Brand> 
    </Validation> 
</VehicleValidation> 
+0

你能分享你的'XML'字符串和你的預期輸出嗎? –

+0

只需將XML添加到問題 –

+0

你能告訴我你想從這個XML中提取什麼嗎? –

回答

1

OCI-Lob是用於與表示LOB內容交互來提供various useful methods的類。

你或許可以直接通過load方法的結果爲simplexml_load_string

$xml = simplexml_load_string($row['xmlcontent']->load()); 

,請務必考慮內存限制的手冊頁上提到:

隨着腳本執行被終止時, memory_limit已到達,請確保LOB不超過此限制。在大多數情況下,建議使用OCI-Lob :: read。