Du var der næsten med dit første forsøg. Mens du evaluerer XPath, når du er inde i attributlisten med /TableAConfig/@*
, du behøver ikke text()
for at få værdien af attributten inde i den. Du er allerede på attributniveauet, så du bruger kun en "prik" .
for nuværende node ville være tilstrækkeligt.
Så prøv sådan noget -
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 eneste forskel fra dit første forsøg er xpath for value
attribut.