簡體   English   中英

檢查字符串是否是格式良好的xml

[英]Check whether string is a well-formed xml

我在DB中有varchar2列。 此列以xml格式存儲字符串。 但並非所有字符串都是格式良好的xml(有些是錯誤的)。 我如何檢查這個字符串是否格式良好的xml?

如果這個字符串沒有很好地形成xml,那么像這樣的sql-query將在運行時失敗:

   select 
       extractvalue(xmltype(some_table.value), 'Attachment/@category')
   from some_table

Xml具有以下格式:

   <Attachment {attributes} />

每個字符串中的屬性數可以不同。

所以當像'asdf'這樣的字符串出現時,我的查詢就不會失敗。

這是一個簡單的功能,將為您檢查;

CREATE OR REPLACE FUNCTION isXML(xml CLOB)
RETURN NUMBER
AS
  xmldata XMLTYPE;
BEGIN
  xmldata := XMLTYPE(xml);
  return 1;
EXCEPTION
  when others then
    return 0;
END;
/

你可以用它;

SQL> SELECT isXML('fdjkasksdf') FROM DUAL;

ISXML('FDJKASKSDF')
-------------------
                  0

SQL> SELECT isXML('<body></body>') FROM DUAL;

ISXML('<BODY></BODY>')
----------------------
                     1    

Oracle SQL函數XMLIsValid和XMLType方法IsSchemaValid()
無條件運行驗證過程。 不記錄任何驗證狀態。 返回:

  • 如果確定文件有效,則為1。
  • 如果確定文檔無效或無法確定文檔的有效性,則為0。

XMLType方法SchemaValidate()
如果驗證狀態為0,則運行驗證過程,默認情況下為0。 如果確定文檔有效,則將驗證狀態設置為1。 (否則,狀態保持為0.)

XMLType方法isSchemaValidated ()返回XMLType實例的記錄驗證狀態。

XMLType方法setSchemaValidated ()設置(記錄)XMLType實例的驗證狀態。

請查看此鏈接以供參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM