
Leer xml Oracle nodo superior
Publicado por Gustavo (2 intervenciones) el 04/10/2013 09:52:57
Muy buenas.
Tengo un problema al leer un xml en ORACLE.
Estoy usando una 9i
El xml es de este tipo:
Para leerlo uso la siguiente select
Pero no consigo que me saque valores para la columna "A". ¿Cómo se le indica para que suba al nodo padre?
Otras opciones que he intentado es buscar desde '/IAEMI-KH/GRUPO/ pero en ese caso cuando uso
extractvalue(value(S1),'/GRUPO/KHDETALLE/@VERTICAL') me da el error ORA-19025 EXTRACTVALUR devuelve un valor de un solo nodo.
Gracias
Tengo un problema al leer un xml en ORACLE.
Estoy usando una 9i
El xml es de este tipo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<IAEMI-KH VERSION="2">
<GRUPO TIPO="VIVIENDAS" KH="0.8664" RATING5A="3.0531" RANGO="B-">
<KHDETALLE KH="0.85" RATING5A="2.93" RANGO="B-" ID="1" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="0.85" RATING5A="2.91" RANGO="B-" ID="2" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="0.93" RATING5A="3.78" RANGO="B-" ID="3" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="0.81" RATING5A="2.41" RANGO="B-" ID="4" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="0.94" RATING5A="3.96" RANGO="B-" ID="5" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="0.93" RATING5A="3.86" RANGO="B-" ID="6" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="0.81" RATING5A="2.35" RANGO="B-" ID="7" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="0.83" RATING5A="2.61" RANGO="B-" ID="8" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="0.81" RATING5A="2.4" RANGO="B-" ID="9" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="0.83" RATING5A="2.55" RANGO="B-" ID="10" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="0.91" RATING5A="3.61" RANGO="B-" ID="11" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
</GRUPO>
<GRUPO TIPO="LOCALES" KH="1.0" RANGO="A">
<KHDETALLE KH="1.0" RANGO="A" ID="1" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="1.0" RANGO="A" ID="2" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
<KHDETALLE KH="1.0" RANGO="A" ID="3" LOCALIZACION="BUENA" CLAVELOCALIZACION="CAT:EPSG:23031" HORIZONTAL="376414.001465211" VERTICAL="4564368.00055727"/>
</GRUPO>
<IAEMIREF REVISION="1">C008-10032609</IAEMIREF>
<TASREF>0051117T07</TASREF>
</IAEMI-KH>
Para leerlo uso la siguiente select
1
2
3
4
SELECT extractvalue(value(S1),'/GRUPO/@RANGO') "A",
extractvalue(value(S1),'/KHDETALLE@VERTICAL') "B",
extractvalue(value(S1),'/KHDETALLE@HORIZONTAL') "C"--,
FROM table(CAST(xmlsequence(extract(XMLType(Fnc_Obtenerdoc('REC_IN_BSAN', 'C008-10032609.KhR.1.xml.iaemi')) ,'/IAEMI-KH/GRUPO/KHDETALLE' )) AS XMLSequenceType )) s1
Pero no consigo que me saque valores para la columna "A". ¿Cómo se le indica para que suba al nodo padre?
Otras opciones que he intentado es buscar desde '/IAEMI-KH/GRUPO/ pero en ese caso cuando uso
extractvalue(value(S1),'/GRUPO/KHDETALLE/@VERTICAL') me da el error ORA-19025 EXTRACTVALUR devuelve un valor de un solo nodo.
Gracias
Valora esta pregunta


0