Consulta XML creando nombres de campos sin conocer los nombres de los nodos.

Si tengo una tabla de SQL Server 2012 que contiene un tipo de campo XML. Los registros que podría contener son los siguientes.

He simplificado mi problema a lo siguiente.

Registro 1:

ID_FIELD='nn1'

XML_FIELD=
<KNOWN_NAME_1>
    <UNKNOWN_NAME1>Some value</UNKNOWN_NAME1>
    <UNKNOWN_NAME2>Some value</UNKNOWN_NAME2>
  ... Maybe more ...
</KNOWN_NAME_1>

Registro 2:

ID_FIELD='nn2'

XML_FIELD=
<KNOWN_NAME_2>
  <UNKNOWN_NAME1>Some value</UNKNOWN_NAME1>
  <UNKNOWN_NAME2>Some value</UNKNOWN_NAME2>
  ... Maybe more unknown fields ...
</KNOWN_NAME_2>

Quiero dar salida no xml:

UNKNOWN_NAME1 | UNKNOWN_NAME2 | ETC
-----------------------------------
Some Value      Some value

Para un valor raíz conocido (es decir, KNOWN_NAME_1)

Es decir. Si yo nuevo los valores de nodo (que no lo hago) podría

SELECT
  XMLData.Node.value('UNKNOWN_NAME1[1]', 'varchar(100)') ,
  XMLData.Node.value('UNKNOWN_NAME2[1],  'varchar(100)')
FROM FooTable
  CROSS APPLY MyXmlField.nodes('//KNOWN_NAME_1') XMLData(Node)
  -- WHERE SOME ID value = 'NN1' (all XML records have a separate id)

Todo está bien, sin embargo, quiero hacer esto para todos los nodos (cantidad desconocida) sin saber los nombres de los nodos. La raíz solo contendrá nodos que no se profundizarán.

¿Es esto posible en SQL?

He visto esto, pero dudo que pueda obtener suficientes derechos para implementarlo.

http://architectshack.com/ClrXmlShredder.ashx

Respuestas a la pregunta(1)

Su respuesta a la pregunta