No sé si alguien tiene experiencia con System.Xml.LinQ o con XQuery, o bueno... no sé si esto se puede hacer de una forma rápida y sencilla y óptima.
Quiero sacar, por ejemplo, todos los nodos hijos del tag Controles, del permiso valor="000001", del rol valor="03" y que su prioridad sea la menor.
Código:
<gestion_controles> <!--NOMBRE PAGINA--> <pagina nombre="AdminMedicos.aspx"> <!--CLASE USUARIO--> <rol valor="03"> <!--PERMISO USUARIO--> <permiso valor="000001" descripcion="Permiso de EdicionMedicoCuadro" prioridad="0"> <controles> <control id="btnGuardarMedico" propiedad="Enabled" valor="True" /> </controles> </permiso> <permiso valor="000003" descripcion="Permiso de ConsultaDocumenacionProveedorCuadro" prioridad="1"> <controles> <control id="btnGuardarMedico" propiedad="Enabled" valor="False" /> </controles> </permiso> </roles> </pagina> </gestion_controles>
Es decir... por ejemplo querría hacer algo como:
SELECT * FROM CONTROLES WHERE PERMISO.valor IN('000001','000003') and rol.valor="03" AND PRIORIDAD=(SELECT TOP 1 PRIORIDAD WHERE PERMISO.valor IN('000001','000003') and rol.valor="03" ORDER BY DESC)
Con esta consulta, sacaríamos los tags:
<control id="btnGuardarMedico" propiedad="Enabled" valor="True" />
Esto es para la gestión de controles, entonces, un usuario puede tener dos permisos, o uno, o 20. Por lo que quiero coger todos los controles del permiso con mayor prioridad para el rol de usuario.
En fin, espero haberme explicado y que puedan ayudarme...