将clob数据(以字符串形式)解密为C#中的实际字符串
本文关键字:字符串 解密 数据 clob | 更新日期: 2023-09-27 18:19:37
我的问题:我正在进行一个REST调用来获取一些信息,它返回一个XML文档,但我需要的值是用CLOB形式表示的
所以我有一个CLOB的字符串表示,例如"eJydVd1v4jgQf/dfkYd9uJOuEQFK6aE8OInTppeviw3…etc."
我想以纯文本的形式看到这些细节,但我不知道如何做到这一点。我搜索了解密/反序列化clobs,但一无所获。我还找到了C#的System.Data.OracleClient命名空间,但我相信这只有在从数据库中读取clob时才有帮助。
那么,有人能帮我找到一种方法,将这些clob数据解密为字符串形式,或者将字符串转换为oracle提供的clob对象吗?
非常感谢,
Fintan
在我的设置中,xml clob被编码为Unicode。
使用以下代码可以获得字符串:
using (ODC.OracleDataReader rdr = cmd.ExecuteReader())
{
if (rdr.Read())
{
var clob = rdr.GetOracleClob(0);
// Can not simply use clob.Value - throws ORA-03113
// Need to read input in chunks
long length = clob.Length;
List<byte> bytes = new List<byte>();
int offset = 0;
while (offset < length)
{
int readLength = (int)Math.Min(1024, length - offset);
byte[] tmp = new byte[readLength];
int readBytes = clob.Read(tmp, 0, readLength);
offset += readLength;
bytes.AddRange(tmp);
}
string xml = System.Text.Encoding.Unicode.GetString(bytes.ToArray());
return DecodeXmlString(xml);
}
else
return null;
}