2017-09-05 205 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

我打賭它適合你。 :) ... –

相關問題