gpt4 book ai didi

xml - PL SQL XMLDOM 改变行结尾

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:48 34 4
gpt4 key购买 nike

我想知道是否有办法在将 xmldom 写入文件时设置 EOL。数据库是在 linux 机器上设置的,但我需要将它保存到一个以 CR LF 行结尾的文件中,我真的不知道该怎么做。

最佳答案

根据您的问题,我假设您使用的是 DBMS_XMLDOM。不幸的是,DBMS_XMLDOM.WRITETOFILE 过程实际上没有很多选项来控制序列化/ pretty-print 。我的版本 (12.1) 有一个未记录的 pflag 参数,通过试验它看起来像值 4 删除所有空格和换行符。这在某些情况下很方便,但我认为这不是您想要的。

DBMS_XMLDOM.WRITETOFILE(doc, 'MY_DIR/xmltest1.xml', 4, 0); 

Oracle 使用适合您的服务器(Windows、Unix)的任何类型的换行符进行 pretty-print 。如果您想使用不同类型的换行符,我认为您最好的选择是将 XML 打印到 CLOB,将 LF 替换为 CRLF,然后将 clob 写入文件。

DECLARE
rc sys_refcursor;
doc DBMS_XMLDOM.DOMDocument;
sdoc clob;
BEGIN
OPEN rc FOR SELECT * FROM ( SELECT rownum FROM dual CONNECT BY level < 50000 );
doc := DBMS_XMLDOM.NewDOMDocument(xmltype( rc ));
dbms_lob.createtemporary(sdoc, true);
dbms_xmldom.writetoclob(doc, sdoc);
sdoc := replace(sdoc, chr(10), chr(13)||chr(10));
DBMS_XSLPROCESSOR.clob2file(sdoc, 'MY_DIR', 'xmltest_crlf.xml');
END;
/

(此示例代码假定您有一个可以写入的名为 MY_DIR 的目录。)

Check out this article有关 XML 到文件性能的更多详细信息。

如果这是一个非常大的 XML 文件并且 replace() 函数性能不佳,您可以考虑在输出文件上使用 linux 命令 unix2dos

关于xml - PL SQL XMLDOM 改变行结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48624613/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com