Nis
26
2020

Clob XML Ayrıştırılması XPATH

Merhaba,

XML formatındaki clob veri yapısındaki verinin ayrıştırılması ve veri yapısından istenilen değerlerin okunması için örnek xpath ile plsql kodları aşağıdaki gibidir.

<tns:main xmlns:tns="https://www.orasistem.com/consultant/developers">
<tns:consultant>
<tns:name title="princible" contacttype="phone" phonenumber="5067705857">mustafa</tns:name>
<tns:surname>korkmaz</tns:surname>
<tns:age>38</tns:age>
</tns:consultant>
<tns:consultant>
<tns:name title="senior" contacttype="email" emailaddress="bkorkmaz@orasistem.com">barış</tns:name>
<tns:surname>korkmaz</tns:surname>
<tns:age>27</tns:age>
</tns:consultant>
</tns:main>

clob olrak verilen xml veri yapısına uygun olan yapı xmltype ile önce xml le çevirilir. Ardından xpath ile istenilen veriler içerisinden okunur. Ayrıca aşağıdaki extract cümlesi içerisinde xml veri yapısında olan namespace ve element attribute leride dikkate alınarak ayrıştırma yapılmıştır.


DECLARE
l_xml CLOB
:= '<tns:main xmlns:tns="https://www.orasistem.com/consultant/developers">
<tns:consultant>
<tns:name title="princible" contacttype="phone" phonenumber="5067705857">mustafa</tns:name>
<tns:surname>korkmaz</tns:surname>
<tns:age>38</tns:age>
</tns:consultant>
<tns:consultant>
<tns:name title="senior" contacttype="email" emailaddress="bkorkmaz@orasistem.com">barış</tns:name>
<tns:surname>korkmaz</tns:surname>
<tns:age>27</tns:age>
</tns:consultant>
</tns:main>';
BEGIN
DBMS_OUTPUT.put_line (
xmltype (l_xml).EXTRACT (
'/tns:main/tns:consultant[1]/tns:name/text()',
'xmlns:tns="https://www.orasistem.com/consultant/developers"').getStringVal ());

DBMS_OUTPUT.put_line (
xmltype (l_xml).EXTRACT (
'/tns:main/tns:consultant[2]/tns:name/text()',
'xmlns:tns="https://www.orasistem.com/consultant/developers"').getStringVal ());

DBMS_OUTPUT.put_line (
xmltype (l_xml).EXTRACT (
'/tns:main/tns:consultant/tns:name[@title="princible"]/text()',
'xmlns:tns="https://www.orasistem.com/consultant/developers"').getStringVal ());


DBMS_OUTPUT.put_line (
xmltype (l_xml).EXTRACT (
'/tns:main/tns:consultant/tns:name[@title="senior"]/text()',
'xmlns:tns="https://www.orasistem.com/consultant/developers"').getStringVal ());

DBMS_OUTPUT.put_line (
xmltype (l_xml).EXTRACT (
'/tns:main/tns:consultant[tns:age[. < 30]]/tns:name/text()',
'xmlns:tns="https://www.orasistem.com/consultant/developers"').getStringVal ());
END;
Mustafa Korkmaz


Yorum yapın

*