在 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">&nbsp;</th>
    <th width="35%">Value Old</th>
    <th width="20px">&nbsp;</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) &gt;= ''' ||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) &gt;= ''' ||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 中为您创建一个脚本,它将为您检索值。