Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Phân tích cú pháp bảng HTML với Oracle

path của bạn đang tìm kiếm một td dưới tr; nhưng có hai, do đó bạn đang gặp lỗi "có chuỗi nhiều mục". Bạn có thể tham khảo từng td gắn thẻ theo vị trí của nó, là td[1] v.v ... Tuy nhiên, nó rất phụ thuộc vào cấu trúc bảng như mong đợi.

Với ví dụ cụ thể này, bạn có thể làm:

with tbl as
(
    select xmltype('
        <table>
          <tbody>
            <tr class="blue"><td>code</td><td>rate</td></tr>
            <tr class="gray_1"><td><span>USD</span><em>1</em></td><td>476.16</td></tr>
            <tr class="gray_2"><td><span>AUD</span><em>1</em></td><td>327.65</td></tr>
            <tr class="gray_9"><td><span>IRR</span><em>100</em></td><td>1.13</td></tr>
            <tr class="blue"><td>some comment</td><td>some comment</td></tr>
            <tr class="gray_1"><td><span>EUR</span><em>1</em></td><td>526.54</td></tr>
          </tbody>
        </table>
    ') xml_data from dual
)
select
    x.class, x.currency, x.amount, to_number(x.rate) as rate
from
    tbl
cross join
    xmltable('/table/tbody/tr'
        passing tbl.xml_data
        columns
            class varchar2(10) path '@class',
            currency varchar2(3) path 'td[1]/span',
            amount number path 'td[1]/em',
            rate varchar2(50) path 'td[2]'
    ) x
where
    x.currency is not null

cái nào nhận được:

CLASS      CUR     AMOUNT       RATE
---------- --- ---------- ----------
gray_1     USD          1     476.16
gray_2     AUD          1     327.65
gray_9     IRR        100       1.13
gray_1     EUR          1     526.54

Mặc dù vậy, sẽ không cần nhiều biến thể trong HTML để phá vỡ nó. Xem câu trả lời này vì một số lý do, nó dễ vỡ và tại sao nó thường được coi là không khôn ngoan khi cố gắng phân tích cú pháp HTML thành XML.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hoàn tác và làm lại trong cơ sở dữ liệu Oracle là gì

  2. Tự động tăng trong Oracle mà không cần sử dụng trình kích hoạt

  3. MS Access sang Oracle dễ dàng Chuyển đổi / Di chuyển

  4. điều gì xảy ra trong giai đoạn chuyển tiếp của việc áp dụng trong R12.2

  5. EF with oracle - Không thể tìm thấy nhà cung cấp cửa hàng được chỉ định trong cấu hình hoặc không hợp lệ.