Je was er bijna met je eerste poging. Tijdens het evalueren van de XPath, wanneer u zich in de attributenlijst bevindt met /TableAConfig/@*
, je hebt text()
niet nodig om de waarde van het attribuut erin te krijgen. U bevindt zich al op attribuutniveau, dus gebruik slechts een "punt" .
voor huidige node zou voldoende zijn.
Dus probeer zoiets als dit -
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
Het enige verschil met je eerste poging is het xpath van de value
attribuut.