Buenos días foreros...
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...