none
Como fazer um select distinct no XML RRS feed

  • Pergunta

  • Olá pessoal, estou com problemas com a minha programação ASP. Preciso fazer um select distinct nos atributos

    Possuo um arquivo  XML na estrutura abaixo:

    <caes>
        <news ano="2008" mes="6" />
        <news ano="2008" mes="6" />
        <news ano="2008" mes="5" />
        <news ano="2008" mes="5" />
        <news ano="2008" mes="4" />
        <news ano="2007" mes="6" />
        <news ano="2007" mes="6" />
        <news ano="2007" mes="5" />
        <news ano="2007" mes="5" />
        <news ano="2007" mes="4" />
        (...) 
        <news ano="2003" mes="2" />
        <news ano="2003" mes="2" />
        <news ano="2003" mes="1" />
    </caes>

     

    Segue abaixo o código utilizado em página:

    <%
      Dim oXmlBancos,oXmlBanco
      Set oXmlBancos = server.CreateObject("MSXML.DOMDocument")
      oXmlBancos.async=false
      oXmlBancos.load(request.ServerVariables("APPL_PHYSICAL_PATH")& "webDev_teste/marcelo/cae.xml")
    %>
    <html><head><title>Teste 2</title></head><body>

    <select>

    <%for each oXmlBanco in oXmlBancos.selectNodes("//news/[not(@ano=preceding-sibling::news/@ano)]/@ano")%>
         <option><%=oXmlBanco.getAttribute("ano")%></option>
    <%next%>

    </select>

     

    O erro acontece no "-->[<--not"

     

    O que estou fazendo de errado?

    Realmente é possivel fazer um select distinct por meio do ASP?

     

    fontes de pesquisa

    http://www.topxml.com/code/cod-432_9894_how-to-select-distinct-items-from-xml-via-xslt.aspx

    http://authors.aspalliance.com/joteke/xsltxpathgroupingarticle/article.aspx

    http://forums.asp.net/t/179316.aspx

    sexta-feira, 27 de junho de 2008 15:08

Todas as Respostas

  • Podes usar 3.5? Porque é muito fácil fazer isso usando Linq:

        Sub Main()
            Dim XML = <caes>
                                    <news ano="2008" mes="6"/>
                                    <news ano="2008" mes="6"/>
                                    <news ano="2009" mes="4"/>
                                </caes>
            Dim List = (From X In XML.<news> Group By X.@ano Into DAno = Distinct() Select DAno).ToList

            For Each X In List
                Console.WriteLine(X.FirstOrDefault.ToString)
            Next
        End Sub

    Resultado:

    <news ano="2008" mes="6" />
    <news ano="2009" mes="4" />
    Press any key to continue . . .
    sábado, 19 de julho de 2008 03:27
  •  

    terça-feira, 19 de agosto de 2008 14:51
  • Infelizmente, não posso, pois a  aplicação é em asp comum o velho asp 3.0

    terça-feira, 19 de agosto de 2008 14:52