SELECT LIKE EM XML

ALTAIR148 21/01/2013 19:50:04
#417841
Boa noite,

Pessoal, estou com um problema e não estou conseguindo resolver, é o seguinte, estou desenvolvendo um sistema que vai coletar alguns dados de umas páginas web, a parte da coleta eu faço, até aí tudo bem, mas para fazer a consulta eu preciso de algumas informações e para não ter que utilizar nenhum bd eu achei melhor gravar essas informações em um XML como se fosse um simples banco de dados, eu passo o nome da comarca e ele me retorna o ID dela, o problema é que por exemplo se o nome não estiver idêntico ao XML ele não encontra nada.

Ex.
No meu sistema tenho a palavra [Ô]TRIBUNAL DE JUSTIÇA[Ô] e no xml está [Ô]Tribunal de Justiça[Ô], pelo que andei lendo a leitura e case sensitive, eu precisava de algo como o Like que eu uso nas consultas no mysql que ele ignora acentos e maiús/minúsc.

Para fazer o select no xml estou usando o código abaixo:

    Dim strFileName As String = [Ô]C:\x.xml[Ô]
Dim xmlFile = XDocument.Load(strFileName)
MsgBox(xmlFile...<ComarcaDescricao>.Where(Function(f) _
f.@nome = [Ô]Tribunal de Justica[Ô]).@ComarcaID)


abaixo um XML de exemplo:

<?xml version=[Ô]1.0[Ô] encoding=[Ô]utf-8[Ô] standalone=[Ô]yes[Ô]?>
<UF>
<ComarcaDescricao nome=[Ô]Tribunal de Justiça[Ô] ComarcaID=[Ô]700[Ô] />
<ComarcaDescricao nome=[Ô]Turmas Recursais[Ô] ComarcaID=[Ô]710[Ô] />
<ComarcaDescricao nome=[Ô]Porto Alegre[Ô] ComarcaID=[Ô]porto_alegre[Ô] />
<ComarcaDescricao nome=[Ô]Agudo[Ô] ComarcaID=[Ô]agudo[Ô] />
<ComarcaDescricao nome=[Ô]Alegrete[Ô] ComarcaID=[Ô]alegrete[Ô] />
<ComarcaDescricao nome=[Ô]Alvorada[Ô] ComarcaID=[Ô]alvorada[Ô] />
<ComarcaDescricao nome=[Ô]Não-Me-Toque[Ô] ComarcaID=[Ô]nao_me_toque[Ô] />
<ComarcaDescricao nome=[Ô]Viamão[Ô] ComarcaID=[Ô]viamao[Ô] />
</UF>


Obrigado.
KERPLUNK 21/01/2013 21:45:59
#417844
Resposta escolhida
Você está usando uma expressão lambda e pode incluir algumas coisinhas pra facilitar:

MsgBox(xmlFile...<ComarcaDescricao>.Where(Function(f) _
f.@nome.ToUpper() = [Ô]Tribunal de Justica[Ô]..ToUpper()).@ComarcaID)[ô] transformar tudo em [Ô]upper case

MsgBox(xmlFile...<ComarcaDescricao>.Where(Function(f) _
f.@nome.ToUpper().Contains([Ô]Tribunal[Ô]).@ComarcaID)



Acho que assim você já consegue [Ô]pegar a idéia[Ô]. Não esqueça que o [Ô]Contains[Ô] pode conter coringas...
ALTAIR148 23/01/2013 13:36:33
#417941
Boa tarde,

KERPLUNK, segui a sua dica e fiz de forma que sempre vai tratar os valores e padronizando eles, padronizei o XML removendo acentos e tals, aí dessa forma testei e funcionou perfeitamente.

Valeu aí, muito obrigado.
Tópico encerrado , respostas não são mais permitidas