Du var nästan där med ditt första försök. När du utvärderar XPath, när du är inne i attributlistan med /TableAConfig/@*
, du behöver inte text()
för att få värdet på attributet inuti det. Du är redan på attributnivån så använd bara en "prick" .
för nuvarande nod skulle vara tillräckligt.
Så prova något sånt här -
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
Den enda skillnaden från ditt första försök är xpath för value
attribut.