Bạn gần như ở đó với nỗ lực đầu tiên của bạn. Trong khi đánh giá XPath, khi bạn ở trong danh sách thuộc tính với /TableAConfig/@*
, bạn không cần text()
để lấy giá trị của thuộc tính bên trong nó. Bạn đã ở cấp thuộc tính nên chỉ cần sử dụng "dấu chấm" .
cho nút hiện tại là đủ.
Vì vậy, hãy thử một cái gì đó như thế này -
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
Sự khác biệt duy nhất so với lần thử đầu tiên của bạn là xpath của giá trị value
thuộc tính.