Oracle 11g2。 例如:
select XMLType(
'<main>
<article>
<title>1.txt</title>
<type>market</type>
<author>
<name>J. Smith</name>
<age>32</age>
</author>
</article>
<comment>For information</comment>
</main>').getStringVal() from dual;
你能帮我修改一下这个select语句吗? 我想将 varchar 输出为:
<title>1.txt</title>
<type>market</type>
<author>
<name>J. Smith</name>
<age>32</age>
</author>
不幸的是,使用extract(&#39; / main / article&#39;)作为:
select XMLType(
'<main>
<article>
<title>1.txt</title>
<type>market</type>
<author>
<name>J. Smith</name>
<age>32</age>
</author>
</article>
<comment>For information</comment>
</main>').extract('/main/article').getStringVal() from dual;
丢失文本格式(一行中的所有输出)。 提前谢谢。
答案 0 :(得分:2)
您可以通过XMLTABLE和XMLSERIALISE执行此操作(包括文章节点)以进行漂亮的打印,例如:
<强>查询强>
with sample_data as (select XMLType(
'<main>
<article>
<title>1.txt</title>
<type>market</type>
<author>
<name>J. Smith</name>
<age>32</age>
</author>
</article>
<comment>For information</comment>
</main>') xdata from dual)
select xmlserialize(document x.col1 as varchar2(4000) indent size = 2)
from sample_data sd
cross join xmltable('/main/article'
passing sd.xdata
columns col1 xmltype path '.') x;
<强>结果强>
<article>
<title>1.txt</title>
<type>market</type>
<author>
<name>J. Smith</name>
<age>32</age>
</author>
</article>
答案 1 :(得分:1)
由于@Boneist显示您可以使用xmlserialize()
进行格式化,但由于您的文档中似乎只有一个文章节点,您仍然可以使用extract()
:
select xmlserialize(document XMLType(
'<main>
<article>
<title>1.txt</title>
<type>market</type>
<author>
<name>J. Smith</name>
<age>32</age>
</author>
</article>
<comment>For information</comment>
</main>').extract('/main/article')
as varchar2(200) indent) as article
from dual;
或者您可以使用XMLQuery:
select xmlserialize(document xmlquery('/main/article'
passing XMLType(
'<main>
<article>
<title>1.txt</title>
<type>market</type>
<author>
<name>J. Smith</name>
<age>32</age>
</author>
</article>
<comment>For information</comment>
</main>')
returning content)
as varchar2(200) indent) as article
from dual;
ARTICLE
--------------------------------------------------------------------------------
<article>
<title>1.txt</title>
<type>market</type>
<author>
<name>J. Smith</name>
<age>32</age>
</author>
</article>