SQL weblogic 中的 Xquery 实现
SQL Xquery implementation in weblogic
我最近参与了将 weblogic 环境从版本 10.3.3.0 升级到 10.3.6.0。两者都托管相同版本的 OSB,在复制所有代码后我们遇到了问题。除了我们最终发现的一块 xquery 之外,一切都有效。有问题的 XQuery 从数据库中获取了一个令牌,因此我们可以通过业务服务发送请求,但我们从数据库中检索到的令牌格式不正确。有问题的 XQuery 是一个 fn-bea:execute-sql
命令。旧环境创建的令牌使用回车 returns 格式化令牌,新环境 运行 使用相同的代码并创建如下所示的令牌:
54686973206973206120746F6B656E0D#&13;
0A54686973206973206120746F6B656E#&13;
0D0A54686973206973206120746F6B65#&13;
6E0D0A54686973206973206120746F6B#&13;
656E0D0A54686973206973206120746F#&13;
6B656E0D0A5468697320697320612074#&13;
令牌在回车[=28=]之前的每行末尾都有一个额外的#&13;
(我用记事本++检查并在这之后看到了回车return字符)。现在我知道 #&13;
是马车 return 的 ASCII 代码,我使用了一些 xquery 格式来删除它们作为解决方法。有问题的 XQuery 是:
fn:replace(xs:token(TOKEN), " " , "
")
其中 token 是我将 sql 函数的结果放入的变量。
但是我想知道是什么原因造成的?这个 xquery 功能是否已从较新版本的 weblogic 中删除?我在 weblogic 更改日志中看不到任何与此直接相关的内容。
还有比将字符串格式化为标记以删除 #&13; 更简洁的解决方法吗?与回车 return 一起,然后重新添加回车 return 代替已添加的空格?
谢谢,
TheVoicedElk
The token had an extra #&13; at the end of each line before the carriage return
不完全是。
是马车 return(又名 \r
或 
)。
是换行符(又名 \n
或 

)。
因此,xquery 引擎将 \n 转换为记事本可以理解的实际换行符,但将回车 return 编码为一个实体。
如果你想删除它,我想 replace($token, '\r','')
可以。你保留 \n 但去掉 \r.
我最近参与了将 weblogic 环境从版本 10.3.3.0 升级到 10.3.6.0。两者都托管相同版本的 OSB,在复制所有代码后我们遇到了问题。除了我们最终发现的一块 xquery 之外,一切都有效。有问题的 XQuery 从数据库中获取了一个令牌,因此我们可以通过业务服务发送请求,但我们从数据库中检索到的令牌格式不正确。有问题的 XQuery 是一个 fn-bea:execute-sql
命令。旧环境创建的令牌使用回车 returns 格式化令牌,新环境 运行 使用相同的代码并创建如下所示的令牌:
54686973206973206120746F6B656E0D#&13;
0A54686973206973206120746F6B656E#&13;
0D0A54686973206973206120746F6B65#&13;
6E0D0A54686973206973206120746F6B#&13;
656E0D0A54686973206973206120746F#&13;
6B656E0D0A5468697320697320612074#&13;
令牌在回车[=28=]之前的每行末尾都有一个额外的#&13;
(我用记事本++检查并在这之后看到了回车return字符)。现在我知道 #&13;
是马车 return 的 ASCII 代码,我使用了一些 xquery 格式来删除它们作为解决方法。有问题的 XQuery 是:
fn:replace(xs:token(TOKEN), " " , "
")
其中 token 是我将 sql 函数的结果放入的变量。
但是我想知道是什么原因造成的?这个 xquery 功能是否已从较新版本的 weblogic 中删除?我在 weblogic 更改日志中看不到任何与此直接相关的内容。
还有比将字符串格式化为标记以删除 #&13; 更简洁的解决方法吗?与回车 return 一起,然后重新添加回车 return 代替已添加的空格?
谢谢, TheVoicedElk
The token had an extra #&13; at the end of each line before the carriage return
不完全是。
是马车 return(又名 \r
或 
)。
是换行符(又名 \n
或 

)。
因此,xquery 引擎将 \n 转换为记事本可以理解的实际换行符,但将回车 return 编码为一个实体。
如果你想删除它,我想 replace($token, '\r','')
可以。你保留 \n 但去掉 \r.