Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/05/2009, 09:38
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Expresion xpath: ¿bug .Net?

Hola a todos. Tengo la siguiente expresion:

"//connectionString[@name='sserver_sql_constr']//parameter[@name='database']/@value"

y el siguiente archivo de configuracion

Código xml:
Ver original
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <dataConfiguration>
  3.   <xmlSerializerSection type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null">
  4.     <enterpriseLibrary.databaseSettings xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" defaultInstance="sserver_sql" xmlns="http://www.microsoft.com/practices/enterpriselibrary/08-31-2004/data">
  5.       <databaseTypes>
  6.         <databaseType name="Oracle" type="Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase, Microsoft.Practices.EnterpriseLibrary.Data, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" />
  7.         <databaseType name="Sql Server" type="Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase, Microsoft.Practices.EnterpriseLibrary.Data, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null" />
  8.       </databaseTypes>
  9.       <instances>
  10.         <instance name="sserver_orcl" type="Oracle" connectionString="sserver_orcl_constr" />
  11.         <instance name="sserver_sql" type="Sql Server" connectionString="sserver_sql_constr" />
  12.       </instances>
  13.       <connectionStrings>
  14.         <connectionString xsi:type="OracleConnectionStringData" name="sserver_orcl_constr">
  15.           <parameters>
  16.             <parameter name="server" value="develope" isSensitive="false" />
  17.             <parameter name="User Id" value="signaserver" isSensitive="false" />
  18.             <parameter name="password" value="signaserver" isSensitive="false" />
  19.           </parameters>
  20.         </connectionString>
  21.         <connectionString name="sserver_sql_constr">
  22.           <parameters>
  23.             <parameter name="database" value="sserver" isSensitive="false" />
  24.             <parameter name="Integrated Security" value="False" isSensitive="false" />
  25.             <parameter name="password" value="signature_server" isSensitive="true" />
  26.             <parameter name="User Id" value="signature" isSensitive="false" />
  27.             <parameter name="server" value="localhost" isSensitive="false" />
  28.           </parameters>
  29.         </connectionString>
  30.       </connectionStrings>
  31.     </enterpriseLibrary.databaseSettings>
  32.   </xmlSerializerSection>
  33. </dataConfiguration>

La idea es obtener todos los atributos con nombre value que pertenezcan a la seccion connectionString con su atributo name igual a sserver_sql_constr.
En esta pagina http://www.whitebeam.org/library/gui...thtestbed.rhtm hago un test y la expresion me trae los resultados que espero. Pero en mi aplicacion, luego de ejecutar el codigo que muestro debajo, la consulta no me arroja ningun resultado:

Código c#:
Ver original
  1. const string expr = "//connectionString[@name='sserver_sql_constr']//parameter[@name='database']/@value";
  2.             XmlDocument doc = new XmlDocument();
  3.             XPathNavigator nav;
  4.             doc.Load("C:\\Documents And Settings\\Mariano\\Escritorio\\Test\\cnfg\\signature.server.data.config");
  5.             Context.Show(doc.InnerXml);          
  6.             nav = doc.CreateNavigator();
  7.             Context.Show(nav.Select(expr).Count.ToString());

Si se fijan en el archivo xml, existe un elemento que se llama enterpriseLibrary.databaseSettings. Si agrego nodos antes de este, y realizo consultas similares a la que necesito, entonces me funciona. Pero si los nodos que estoy buscando se encuentran debajo de este elemento, me deja de funcionar y ya no me trae ningun resultado.
No se como funciona internamente xpath, la verdad es que no tengo mucha experiencia en esto, supongo que ¿puede llegar a existir un problema con el '.' en el nombre del elemento?. Si saco este '.' para probar si este es el problema, el documento xml no se carga completo, ya que esta validado por un esquema.
Estoy usando Visual Studio 2005. La version del framework es 2.0.50727.
Gracias de antemano.
Saludos.
__________________
Add, never Remove