none
Linq to XML - lectura de tags anidados RRS feed

  • Pregunta

  • Buenos dias,

    Si tengo un xml con la siguiente estructura:

    <sectores>
     <sector ID="1">
      <consulta nombre="C01">
       <SQL_Select>select * from tabla1</SQL_Select>
       <SQL_Where>where campo1=algo</SQL_Where>
      </consulta>
      <consulta nombre="C02">
       <SQL_Select>select * from tabla2</SQL_Select>
       <SQL_Where>where campo2=algomas</SQL_Where>
      </consulta>
     </sector>
     <sector ID="2">
      ...
     </sector>
    </sectores>

    Quiere leer, a traves del Linq, dado un sector, una configuracion de consultas (<SQL_Select> y <SQL_Where>) segun alguna condicion, es decir,

    tengo como una doble condicion de busqueda: por sector y por consulta, como seria la instruccion por LINQ?

    Arrancaria, quizas, de la siguiente forma:

    Dim _sec = From sec In _xmlDoc.Descendants("sector") _

    Where sec.Attribute("ID").Value = IDSector _ ???

     

    Salu2.

     





     


    • Cambiado Enrique M. Montejo miércoles, 28 de septiembre de 2011 15:13 (De:Lenguaje VB.NET)
    • Editado knetroot miércoles, 28 de septiembre de 2011 16:52
    miércoles, 28 de septiembre de 2011 14:11

Todas las respuestas

  • pero lo que necesitas por linq es recuperar estos tag de sql_select y sql_where o tambien ejecutarlos

    podrias usar algo como esto

     

            Dim xml As String = "<sectores>" & _
                                "    <sector ID='1'>" & _
                                "        <consulta nombre='C01'>" & _
                                "            <SQL_Select>select * from tabla1</SQL_Select>" & _
                                "            <SQL_Where>where campo1=algo</SQL_Where>" & _
                                "        </consulta>" & _
                                "        <consulta nombre='C02'>" & _
                                "            <SQL_Select>select * from tabla2</SQL_Select>" & _
                                "            <SQL_Where>where campo2=algomas</SQL_Where>" & _
                                "        </consulta>" & _
                                "    </sector>" & _
                                "</sectores>"
    
            Dim _xmlelement As XElement = XElement.Parse(xml)
    
            Dim result = From item In _xmlelement.Descendants("consulta") _
                         Select New With { _
                            .sqlselect = item.Element("SQL_Select").Value, _
                            .sqlwhere = item.Element("SQL_Where").Value _
                        }
    


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    miércoles, 28 de septiembre de 2011 14:39
  • pero lo que necesitas por linq es recuperar estos tag de sql_select y sql_where o tambien ejecutarlos

    podrias usar algo como esto

     

     

            Dim xml As String = "<sectores>" & _
    
                                "    <sector ID='1'>" & _
    
    
                                "        <consulta nombre='C01'>" & _
    
                                "            <SQL_Select>select * from tabla1</SQL_Select>" & _
    
    
                                "            <SQL_Where>where campo1=algo</SQL_Where>" & _
    
    
                                "        </consulta>" & _
    
                                "        <consulta nombre='C02'>" & _
    
    
                                "            <SQL_Select>select * from tabla2</SQL_Select>" & _
    
    
                                "            <SQL_Where>where campo2=algomas</SQL_Where>" & _
    
                                "        </consulta>" & _
    
    
                                "    </sector>" & _
    
    
                                "</sectores>"
    
    
    
            Dim _xmlelement As XElement = XElement.Parse(xml)
    
            Dim result = From item In _xmlelement.Descendants("consulta") _
    
                         Select New With { _
    
                            .sqlselect = item.Element("SQL_Select").Value, _
    
                            .sqlwhere = item.Element("SQL_Where").Value _
    
                        }
    
    

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    Ok, solo quiero recuperar los tags, pero necesito para dado un sector luego buscar la consulta deseada, por ejemplo, para el

    sector '1' quiero la consulta 'C02', como hago estos filtros (WHEREs)?.

    Es decir, como dos consultas linq anidadas, para dado un sector obtener una consulta especifica configurada.

    Salu2.









    • Editado knetroot miércoles, 7 de diciembre de 2011 20:15
    miércoles, 28 de septiembre de 2011 16:05