DECLARE @xml XML SET @xml ='<?xml version="1.0"?> <dtsconfiguration> <dtsconfigurationheading> <dtsconfigurationfileinfo GeneratedBy="Generic" GeneratedFromPackageName="Generic" GeneratedFromPackageID="{AA722E45-EE85-4C19-9BFA-8776E1A7463B}" GeneratedDate="7/31/2019 11:27:59 AM"/> </DTSConfigurationHeading> <configuration ConfiguredType="Property" Path="\Package.Connections[Test].Properties[ConnectionString]" ValueType="String"> <configuredvalue>Data Source=Local;Initial Catalog=Tester;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;</ConfiguredValue> </Configuration> <configuration ConfiguredType="Property" Path="\Package.Connections[Test].Properties[ServerName]" ValueType="String"> <configuredvalue>local</ConfiguredValue> </Configuration> </DTSConfiguration>' ; WITH CTE AS ( SELECT node.value('fn:local-name(.)', 'varchar(max)') NAME ,'/' + node.value('fn:local-name(.)', 'varchar(max)') Path ,node.query('*') Children ,Convert(varchar(max),'') Parent ,0 as depth FROM @xml.nodes('*') AS Root(node) UNION ALL SELECT node.value('fn:local-name(.)', 'varchar(max)') NAME ,Parent+'/' +cte.NAME + '/' + node.value('fn:local-name(.)', 'varchar(max)') Path ,node.query('*') Children ,Parent + '/'+ NAME Parent ,depth +1 FROM cte CROSS APPLY cte.children.nodes('*') AS Child(node) UNION ALL SELECT '@'+node.value('fn:local-name(.)', 'varchar(max)') NAME ,Parent+'/' +CTE.NAME + '/'+node.value('fn:local-name(../.)', 'varchar(max)')+ '/@' + node.value('fn:local-name(.)', 'varchar(max)') Path ,'' Children ,Parent + '/'+ NAME Parent ,depth +1 FROM cte CROSS APPLY cte.children.nodes('/*/@*') AS Child(node) ) SELECT * FROM cte order by depth
Tuesday, April 9, 2013
Listing XML Elements and attribute names with XqueryPaths
Been a while since I made a post. I have been quite busy with the new job and resurrected a piece of code that I thought might be useful to someone else. The following code will list the Name of each entity in the xml doc and the compatible X-Query path.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment