我直接从 Oracle 中的 PL/SQL 生成 XML。
关于特殊字符和字符编码,确保输出字符串符合 XML 的首选方法是什么?
大部分XML文件是静态的,我们只需要输出少数字段的数据。
我认为不好的做法示例:
DECLARE @s AS NVARCHAR(100)
SELECT @s = 'Test chars = (<>, æøåÆØÅ)'
SELECT '<?xml version="1.0" encoding="UTF-8"?>'
+ '<root><foo>'
+ @s
+ '</foo></root>' AS XML
最佳答案
我发现了两种生成 XML 的好方法。一个是 SYS.XMLDOM 包,它本质上是 Java DOM API 的包装器。它有点笨拙,因为 pl/sql 不具备 Java 的多态功能,因此您必须经常将元素显式“转换”为节点,反之亦然才能使用包中的方法。
最酷的 IMO 技术是使用 XMLElement 等,SQL 函数如下:
SET SERVEROUTPUT ON SIZE 1000000;
DECLARE
v_xml XMLTYPE;
BEGIN
SELECT
XMLElement( "dual",
XMLAttributes( dual.dummy AS "dummy" )
)
INTO
v_xml
FROM
dual;
dbms_output.put_line( v_xml.getStringVal() );
END;
/
如果您的 XML 结构不是很复杂并且很容易映射到您的表结构,那么这会非常方便。
关于sql - 从 Oracle 查询中编码 XML 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1637465/