Sql Oracle—如何在XML标记下捕获值
需要以下方面的帮助。 如果我想为一个特定的标记捕获一个值,我该如何处理这个值?。比如说 我想从突出显示的标记中获取值(800.422.2762(美国和加拿大))Sql Oracle—如何在XML标记下捕获值,sql,xml,oracle,Sql,Xml,Oracle,需要以下方面的帮助。 如果我想为一个特定的标记捕获一个值,我该如何处理这个值?。比如说 我想从突出显示的标记中获取值(800.422.2762(美国和加拿大)) <text top="89" left="611" width="177" height="11" font="1">800.422.2762 (U.S. and Canada)</text> 只需将XQuery从 '/pdf2xml/page/text' 到 结果将是 800.422.2762 (U.S.
<text top="89" left="611" width="177" height="11" font="1">800.422.2762 (U.S. and Canada)</text>
只需将XQuery从
'/pdf2xml/page/text'
到
结果将是
800.422.2762 (U.S. and Canada)
或将查询更改为:
SELECT x.*
FROM data,
XMLTABLE ('/pdf2xml/page/text'
PASSING xmldoc
COLUMNS
text VARCHAR2 (50) PATH '/text',
top number PATH '@top',
left number PATH '@left',
width number PATH '@width',
height number PATH '@height',
font number PATH '@font'
) x
where x.top = 89
and x.left = 611
and x.width = 177
and x.height = 11
and x.font = 1;
如果您只有一个源文档,并且只需要一个节点值,那么可以使用XMLQuery而不是XMLTable,在@wolφi的XPath上稍有变化:
select XMLQuery('/pdf2xml/page/text[@top=89]/text()'
passing xmldoc
returning content) as text
from data;
这会给您一个XML片段,或者
select XMLQuery('/pdf2xml/page/text[@top=89]/text()'
passing xmldoc
returning content).getStringVal() as text
from data;
这将为您提供一个字符串:
TEXT
------------------------------
800.422.2762 (U.S. and Canada)
当然,如果您确实有多个文档或节点,那么XMLTable就是一种选择
SELECT x.*
FROM data,
XMLTABLE ('/pdf2xml/page/text'
PASSING xmldoc
COLUMNS
text VARCHAR2 (50) PATH '/text',
top number PATH '@top',
left number PATH '@left',
width number PATH '@width',
height number PATH '@height',
font number PATH '@font'
) x
where x.top = 89
and x.left = 611
and x.width = 177
and x.height = 11
and x.font = 1;
select XMLQuery('/pdf2xml/page/text[@top=89]/text()'
passing xmldoc
returning content) as text
from data;
select XMLQuery('/pdf2xml/page/text[@top=89]/text()'
passing xmldoc
returning content).getStringVal() as text
from data;
TEXT
------------------------------
800.422.2762 (U.S. and Canada)