Depois de fazer muita investigação sobre isso, finalmente cheguei a um ponto de entender isso. Não podemos converter diretamente um XML para OCI-Lob Object diretamente. Porque
"O Oracle Call Interface (OCI) é uma interface de programação de aplicativos (API) que permite que aplicativos escritos em C interajam com um ou mais servidores Oracle. possível com o banco de dados Oracle9i, incluindo processamento de instruções SQL e manipulação de objetos."
Que seja como Se tivermos alguma função XMLAGG com getClobVal() no lado da consulta que estamos armazenando como "Val", que retorna o objeto OCI-Lob como abaixo
$Val = OCI-Lob Object
(
[descriptor] => Resource id #130
)
a função abaixo nos dará o conteúdo XML do objeto OCI-Lob [CLOB DataType], que mencionei nas perguntas.
$this->$conn = oci_connect('user', 'password', 'connectionString');
$query = "Some SELECT Query";
$stmt = oci_parse($this->oraConn, $query);
oci_execute($stmt);
while($row = oci_fetch_assoc($stmt)){
if($row['Val'] != false){
printVar($row['Val']->load());
break;
}
}
Agora, se eu remover load() de printVar($row['Val']->load()) e fizer printVar($row['Val']) ele retornará novamente o objeto OCI-Lob.
Para obter o objeto OCI-Lob Precisamos do Oracle Select Query, além disso, podemos passar XMLAttributes/Elements com getClobVal() ou qualquer função. Mas não podemos analisar XML e convertê-lo em objeto OCI-Lob, pois ele sempre interage com o banco de dados/servidor Oracle.
Então, para executar o teste da unidade PHP, o que eu fiz foi pegar o XML e convertê-lo em um OCIMockObject, que terá todos os valores XML e analisá-lo para a função.
Funcionou!
Este link é útil para saber mais sobre Oracle Call Interface(OCI )
Obrigado.