![](/img/trans.png)
[英]How to select node from potentially not well-formed xml as a varchar?
[英]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()
無條件運行驗證過程。 不記錄任何驗證狀態。 返回:
XMLType方法SchemaValidate()
如果驗證狀態為0,則運行驗證過程,默認情況下為0。 如果確定文檔有效,則將驗證狀態設置為1。 (否則,狀態保持為0.)
XMLType方法isSchemaValidated ()返回XMLType實例的記錄驗證狀態。
XMLType方法setSchemaValidated ()設置(記錄)XMLType實例的驗證狀態。
請查看此鏈接以供參考
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.