2017-09-05 202 views
1

我想在我的html文件中使用Xpath(4ex:/html/body/table/tbody/tr[1]/td[6])在Oracle窗体中读取“Value new”列更改并显示元素值,我可以获取建议为了那个原因?在Oracle表单中使用Xpath读取和显示HTML(xml)文件中的元素

我在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> 
+1

发布您的XML所以我们可以为您创建一个xpath –

+0

@shubham:我们有XPath,问题是如何打开HTML文件,例如在C#中我们有xml读取器,您可以通过xpath并提取数据。现在,siti的问题是如何解析htnl文件,ia有没有读者?最佳做法是什么? – Amir

+1

首先HTML和XML都是不同的东西..是的,他们都有dom,但他们是不同的..硒可以阅读元素从HTML,但不是从XML ...现在,如果你的源代码是HTML,你能告诉它是在本地主机上托管localhost:8080 –

回答

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')||''''" 

我没有在Oracle形式的遭遇,但它应该是这样的: -

ExtractValue(Value(p),'/html/body/table//thead/tr[1]/th[6]/text()') as value 

OR

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中为您创建一个脚本,它将为您检索值。

+0

感谢您的宝贵答案。 – Amir

+1

我打赌它适合你。 :) ... –

相关问题