今天遇到了關於oracle裡面處理xml,查閱了網上很多資料,①有提到使用dom來處理xml或者②直接使用xmltype、extract、extractvalue等來處理,我測試整理了下第二個方案,因此在這裡作個記錄。
為了方便測試,我新建了一張測試表,其中包含個clob格式的字段,乙個xmltype格式字段,乙個id,下面的資料我暫時只錄入了re_str這個clob欄位,而xmltype格式欄位未錄入值。
實際運用中看你這個xml到底有好大,需要建clob即建。
分別展示哈資料:id=2 (不帶字首 或者命名空間)
這裡我並沒有<?xml ?>這個頭部,但是暫時沒的問題,內容是xml節點對稱的。
id=3(不帶字首 或者命名空間)
id = 1 (帶字首和命名空間)
①clob轉換為xmltype(提供了xmltype格式轉換,類似於to_char,to_date)
②extractvalue函式,它定義只能返回乙個節點上的乙個值,如果該節點有多個值則會報錯,它接受三個引數:第乙個是xmltype格式的源,第二個是xpath路徑,第三個是命名空間。
③extract函式,它定義返回乙個節點下的所有值得xmltype格式,用法同2也支援三個引數。
④table和xmlsequence函式,兩個函式並用一起遍歷出該xml下指定路徑下的所有值並以表的形式展示。
⑤xmltable解析為表且帶多個字段。其中columns為想要的欄位名,path指xml中的路徑到指定標籤。
⑥這裡特別說明下帶字首和命名空間的解析,我例子中解析了第一層帶字首和命名空間。當我如法炮製解析子節點也帶字首和命名空間時不成功。
這裡使用createxml有點畫蛇添足,只是借用這個表資料展示下。這裡返回body下面的所有xml標籤,但是我這裡又有乙個帶命名空間的標籤,如法炮製未能解析成功,卡在這裡了,只解析了第一層。
其中oracle解析xml還有種使用dom來解析或還有其他函式,這裡未作記錄,解析不帶字首和命名空間上面的夠用了,解析帶字首和命名空間的,我這裡只解析了第一層,若子節點也帶,暫時沒解決,待後面來補充。
使用JDOM讀寫xml 1
本文使用了jdom的一些簡單功能建立了乙個標準的xml檔案,如果需要對建立的xml有詳細的格式要求,請參照api文件作相應設定 父節點 element head new element head root.setattribute root this is root 設定屬性 子節點,用來顯示檔案 ...
xml 1 可擴充套件標記語言概念1
xml 1 extensiable markup language 可擴充套件標記語言 xml這種文件格式,它與語言無關,與平台無關,與操作無關,在所有的環境下,都可以識別xml格式 xml也稱為 元語言 用於描述其他語法格式的一種語言 xml的作用 1 描述語法格式 2 在不同的語言 不同的系統 ...
關於XML的解析
最近由於做新業務的需要,在研究高通平台上的xml lib。這套庫提供了完整的對於xml檔案和樹形資料結構之間的編譯碼轉換。使用的演算法非常通用化,並且為平台相容性提供了抽象層的介面。這套庫在高通的release 中發布,應該達到商用水平,可以作為後續開發的乙個重要支撐。在研究 的時候,發現使用的是完...