Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle—如何在XML标记下捕获值_Sql_Xml_Oracle - Fatal编程技术网

Sql Oracle—如何在XML标记下捕获值

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.

需要以下方面的帮助。 如果我想为一个特定的标记捕获一个值,我该如何处理这个值?。比如说

我想从突出显示的标记中获取值(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. 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)