在 oracle 窗体中使用 Xpath 读取并显示 html(xml) 文件中的元素
Read and display an element in a html(xml) file by using Xpath in oracle form
我想读取我的 html 文件中的 "Value new" 列更改并使用 Oracle 表单中的 Xpath(4ex:/html/body/table/tbody/tr[1]/td[6] )
显示元素值,我可以得到一些建议吗?
我的 oracle 格式输出应该是:
0015: IF :NB_CNTRL.FROM_DATE IS NOT NULL THEN
0016: LV_SQL := LV_SQL || ' AND TRUNC(NB_RECEIPT_DATE) >= ''' ||to_char(:NB_CNTRL.FROM_DATE, 'dd-MON-rrrr')||'''';
sample of HTML file
<!-- saved from url=(0043)file:///c:/FRM_05.fmb.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--<base href="\HTMLPictures\">--><base href=".">
<style type="text/css">
body,html,table {font-family: "lucida grande",tahoma,verdana,arial,sans-serif;font-size: 12px;line-height: 1.5em;}
</style>
<title>Compare</title>
</head>
<body>
<table width="100%" border="0">
<thead>
<tr>
<th width="30%">Name</th>
<th width="50px">Changes</th>
<th width="20px"> </th>
<th width="35%">Value Old</th>
<th width="20px"> </th>
<th width="35%">Value New</th>
</tr>
</thead>
<tbody>
<tr class="lin"><td class="lvl8">(adjoining line)</td><td></td><td class=""></td><td class="">0015: IF :NB_CNTRL.FROM_DATE IS NOT NULL THEN</td><td class=""></td><td class="">0015: IF :NB_CNTRL.FROM_DATE IS NOT NULL THEN</td></tr>
<tr class="lin"><td class="lvl8">(line changed)</td><td><img src="./Compare_files/changes_mod.gif"></td><td class="cmpChanged"></td><td class="cmpChanged">0016: LV_SQL := LV_SQL || ' AND TRUNC(NB_RECEIPT_DATE) >= ''' ||to_char(:NB_CNTRL.FROM_DATE, 'dd-MON-yyyy')||'''';</td><td class="cmpChanged"></td><td class="cmpChanged">0016: LV_SQL := LV_SQL || ' AND TRUNC(NB_RECEIPT_DATE) >= ''' ||to_char(:NB_CNTRL.FROM_DATE, 'dd-MON-rrrr')||'''';</td></tr>
</tbody>
</table>
</body></html>
ExtractValue
应该以 oracle 形式为您工作
XPath 会像 :-
/html/body/table//thead/tr[1]/th[6]/text() -> it will return -> "0015: IF :NB_CNTRL.FROM_DATE IS NOT NULL THEN"
/html/body/table/tbody/tr[2]/td[6]/text() -> it will return -> "0016: LV_SQL := LV_SQL || ' AND TRUNC(NB_RECEIPT_DATE) >= ''' ||to_char(:NB_CNTRL.FROM_DATE, 'dd-MON-rrrr')||''''"
我没有 oracle 形式的经验,但它应该像 :-
ExtractValue(Value(p),'/html/body/table//thead/tr[1]/th[6]/text()') as value
或
execute immediate 'alter session set events =''31156 trace name context forever, level 2''';
l_xml := xmltype(l_clob);
execute immediate 'alter session set events =''31156 trace name context off''';
select extractvalue( l_xml
, '/html/body/table//thead/tr[1]/th[6]/text()' )
into l_value
from dual;
dbms_output.put_line(l_value);
end;
来源:-
https://community.oracle.com/thread/2381518
此外,您只能使用 Selenium 测试基于 HTML 的网站。如果 Oracle 应用程序公开了一个可通过 Web 浏览器访问的基于 HTML 的前端,那么您可以使用 Selenium 对其进行测试,否则您不能。
如果您可以使用浏览器访问它,请告诉我,如果可以,那么我将在 java 中为您创建一个脚本,它将为您检索值。
我想读取我的 html 文件中的 "Value new" 列更改并使用 Oracle 表单中的 Xpath(4ex:/html/body/table/tbody/tr[1]/td[6] )
显示元素值,我可以得到一些建议吗?
我的 oracle 格式输出应该是:
0015: IF :NB_CNTRL.FROM_DATE IS NOT NULL THEN
0016: LV_SQL := LV_SQL || ' AND TRUNC(NB_RECEIPT_DATE) >= ''' ||to_char(:NB_CNTRL.FROM_DATE, 'dd-MON-rrrr')||'''';
sample of HTML file
<!-- saved from url=(0043)file:///c:/FRM_05.fmb.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<!--<base href="\HTMLPictures\">--><base href=".">
<style type="text/css">
body,html,table {font-family: "lucida grande",tahoma,verdana,arial,sans-serif;font-size: 12px;line-height: 1.5em;}
</style>
<title>Compare</title>
</head>
<body>
<table width="100%" border="0">
<thead>
<tr>
<th width="30%">Name</th>
<th width="50px">Changes</th>
<th width="20px"> </th>
<th width="35%">Value Old</th>
<th width="20px"> </th>
<th width="35%">Value New</th>
</tr>
</thead>
<tbody>
<tr class="lin"><td class="lvl8">(adjoining line)</td><td></td><td class=""></td><td class="">0015: IF :NB_CNTRL.FROM_DATE IS NOT NULL THEN</td><td class=""></td><td class="">0015: IF :NB_CNTRL.FROM_DATE IS NOT NULL THEN</td></tr>
<tr class="lin"><td class="lvl8">(line changed)</td><td><img src="./Compare_files/changes_mod.gif"></td><td class="cmpChanged"></td><td class="cmpChanged">0016: LV_SQL := LV_SQL || ' AND TRUNC(NB_RECEIPT_DATE) >= ''' ||to_char(:NB_CNTRL.FROM_DATE, 'dd-MON-yyyy')||'''';</td><td class="cmpChanged"></td><td class="cmpChanged">0016: LV_SQL := LV_SQL || ' AND TRUNC(NB_RECEIPT_DATE) >= ''' ||to_char(:NB_CNTRL.FROM_DATE, 'dd-MON-rrrr')||'''';</td></tr>
</tbody>
</table>
</body></html>
ExtractValue
应该以 oracle 形式为您工作
XPath 会像 :-
/html/body/table//thead/tr[1]/th[6]/text() -> it will return -> "0015: IF :NB_CNTRL.FROM_DATE IS NOT NULL THEN"
/html/body/table/tbody/tr[2]/td[6]/text() -> it will return -> "0016: LV_SQL := LV_SQL || ' AND TRUNC(NB_RECEIPT_DATE) >= ''' ||to_char(:NB_CNTRL.FROM_DATE, 'dd-MON-rrrr')||''''"
我没有 oracle 形式的经验,但它应该像 :-
ExtractValue(Value(p),'/html/body/table//thead/tr[1]/th[6]/text()') as value
或
execute immediate 'alter session set events =''31156 trace name context forever, level 2''';
l_xml := xmltype(l_clob);
execute immediate 'alter session set events =''31156 trace name context off''';
select extractvalue( l_xml
, '/html/body/table//thead/tr[1]/th[6]/text()' )
into l_value
from dual;
dbms_output.put_line(l_value);
end;
来源:-
https://community.oracle.com/thread/2381518
此外,您只能使用 Selenium 测试基于 HTML 的网站。如果 Oracle 应用程序公开了一个可通过 Web 浏览器访问的基于 HTML 的前端,那么您可以使用 Selenium 对其进行测试,否则您不能。
如果您可以使用浏览器访问它,请告诉我,如果可以,那么我将在 java 中为您创建一个脚本,它将为您检索值。