Anda hampir sampai di sana dengan upaya pertama Anda. Saat mengevaluasi XPath, saat Anda berada di dalam daftar atribut dengan /TableAConfig/@*
, Anda tidak perlu text()
untuk mendapatkan nilai atribut di dalamnya. Anda sudah berada di level atribut, jadi cukup gunakan .
untuk simpul saat ini sudah cukup.
Jadi cobalah sesuatu seperti ini -
SELECT XMLElement("TableAConfigList",
(SELECT
XMLAgg(
XMLElement("TableAConfig",
XMLAttributes(
tmp."attr_name" as "name",
tmp."attr_text" as "value"
)
)
) from XMLTable('/TableAConfig/@*'
passing TableA.TableA_config
columns
"attr_name" varchar(30) path 'name()',
"attr_text" varchar(30) path '.'
) tmp
)
) from dual
Satu-satunya perbedaan dari upaya pertama Anda adalah xpath dari value
atribut.