使用 Oracle 形式的 Xpath 读取和显示 html(xml) 文件中的元素
Posted
技术标签:
【中文标题】使用 Oracle 形式的 Xpath 读取和显示 html(xml) 文件中的元素【英文标题】:Read and display an element in a html(xml) file by using Xpath in oracle form 【发布时间】:2017-09-05 08:36:18 【问题描述】:我想在我的 html 文件中读取“新值”列更改并在 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 border="0">
<thead>
<tr>
<th >Name</th>
<th >Changes</th>
<th > </th>
<th >Value Old</th>
<th > </th>
<th >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>
【问题讨论】:
发布您的 xml,以便我们为您创建 xpath @shubham:我们有 XPath,问题是如何打开 html 文件,例如在 c# 中我们有 xml 阅读器,您可以通过它传递 xpath 并提取数据。现在,siti 的问题是如何解析 htnl 文件,有没有阅读器?最佳做法是什么? 首先,HTML 和 XML 都是不同的东西 .. 是的,它们都有 dom,但它们不同.. selenium 可以从 html 中读取元素,但不能从 XML 中读取元素……现在,如果您的来源是html ,你能告诉它是否托管在你的本地主机上,比如 localhost:8080 @ShubhamJain:请再次阅读我的问题,我添加了示例。除了使用硒还有其他方法吗?你有任何使用 Java 以 oracle 形式使用 selenium 的例子吗? 更新了我的答案 【参考方案1】: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')||''''"
我没有甲骨文形式的经验,但应该是这样的:-
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;
来源:-
XML Oracle: Extract specific attribute from multiple repeating child nodes
https://community.oracle.com/thread/2381518
此外,您只能使用 Selenium 测试基于 HTML 的网站。如果 Oracle 应用程序公开了可通过 Web 浏览器访问的基于 HTML 的前端,那么您可以使用 Selenium 对其进行测试,否则您不能。
如果您可以使用浏览器访问它,请告诉我,如果可以,那么我将在 java 中为您创建一个脚本,它将为您检索值。
【讨论】:
以上是关于使用 Oracle 形式的 Xpath 读取和显示 html(xml) 文件中的元素的主要内容,如果未能解决你的问题,请参考以下文章