sql >> データベース >  >> RDS >> Oracle

OracleクエリでのHTMLデータの処理

    「完璧な」クエリを検索すると、原因が失われる可能性があります。ブラウザ(他の場所で推奨されているテキストブラウザを含む)は、すべてのねじれやエッジケースの解決に何年も費やしてきました。

    本当に外部リソースを使用できない場合は、dbms_xmldomを介してDOMをウォークすることができます。 パッケージ。これは、匿名ブロックとサンプル値を使用したデモで、画面に出力されます(有効にしている場合)。ただし、CLOBを返す関数、または最終結果として必要なものに簡単に適合させることができます。

    set serveroutput on
    set define off
    
    declare     
      l_element xmldom.domelement;
      l_document xmldom.domdocument;
      l_text clob;
    
      procedure print_node (p_node xmldom.domnode) is
        l_nodes dbms_xmldom.domnodelist;
      begin
        -- print out any plain text
        if dbms_xmldom.getnodetype(p_node) = 3
            and dbms_xmldom.getnodename(p_node) = '#text' then
          dbms_output.put_line(dbms_xmldom.getnodevalue(p_node));
        end if;
        -- just to match your expected output, add a blank line for p tags
        if dbms_xmldom.getnodetype(p_node) = 1
            and dbms_xmldom.getnodename(p_node) = 'p' then
          dbms_output.new_line;
        end if;
        -- get any child nodes
        l_nodes := dbms_xmldom.getchildnodes(p_node);
        -- process each node in turn, recursively
        for i in 0..dbms_xmldom.getlength(l_nodes) - 1 loop
          print_node(dbms_xmldom.item(l_nodes, i));
        end loop;
      end print_node;
    
    begin           
      l_text := '<p>NAME:&nbsp;&nbsp;XXX<br />Company Name: &nbsp;YYYYY<br />Location:&nbsp;ZZZ, 22 Z1Z1Z1, Z2Z2Z2,Z3Z3Z3, 0000024, IND<br />Type:&nbsp;PrePA<br />Team:&nbsp;Team1, Dues tamble <br />Date:&nbsp;January 25 &ndash; 26, 2016<br />Rating: &nbsp;Tr 2<br />Number:&nbsp;8554342</p>
    <p><u>Observ: <br /></u>There were (6) major and (2) minor .<br />&nbsp;<br />MAJOR</p><ul>    <li>Sample Text_1.</li>    <li>Sample Text_2.</li>    
    <li>Sample Text_33.</li>    <li>Sample Text_4.</li>    <li>Sample Text_5.</li></ul><p>MINOR</p><ul>    <li>Sample Text_7</li>    
    <li>Sample Text_8<br />    &nbsp;</li></ul><p><b> Background</b><br />&nbsp;</p>'; 
    
      -- wrap the fragment in a root node so it parses, and run through
      -- utl_i18n.unescape_reference to get rid of &nbsp; etc.
      l_document := dbms_xmldom.newdomdocument('<html>'
        || utl_i18n.unescape_reference(l_text) || '</html>');
      -- get the root element (which is now the added html)
      l_element := dbms_xmldom.getdocumentelement(l_document);
      -- call the recursive procedure to process this node
      print_node(dbms_xmldom.makenode(l_element));
    end;
    /
    

    生成するもの:

    NAME:  XXX
    Company Name:  YYYYY
    Location: ZZZ, 22 Z1Z1Z1, Z2Z2Z2,Z3Z3Z3, 0000024, IND
    Type: PrePA
    Team: Team1, Dues tamble 
    Date: January 25 – 26, 2016
    Rating:  Tr 2
    Number: 8554342
    
    Observ: 
    There were (6) major and (2) minor .
     
    MAJOR
    Sample Text_1.
    Sample Text_2.
    Sample Text_33.
    Sample Text_4.
    Sample Text_5.
    
    MINOR
    Sample Text_7
    Sample Text_8
         
    
     Background
     
    


    1. ノードを使用したAuroraMySQLサーバーレスへの接続

    2. Django 2. * mysqlclientを使用してMySQLデータベースで照合を設定するにはどうすればよいですか?

    3. 一般的なエラーを解決する方法:2006MySQLサーバーがなくなりました

    4. Oracleデータベースの下限と上限のあるFORALLステートメント