2017-06-01 33 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。