Jump to content

Arquivo txt vb.net


sabing
 Share

Recommended Posts

Então eu preciso encontrar em um arquivo txt as latitudes e as longitudes e o nome da cidade 

arquivo txt

eu preciso colocar em um datagridview a listas das coordenadas e o nome da cidade mais estou com dificuldade , eu não consigo ler o xml , o procedimento que tenho ler xml , mais esse não

 

<?xml version="1.0" encoding="UTF-8" ?> 
- <searchresults timestamp="Thu, 18 Nov 21 01:36:26 +0000" attribution="Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright" querystring="centro, Cuiaba Gerais, Brazil" exclude_place_ids="98415946,241126356,144782900,154971813,240519628,188761987,239459010,176623637,161991581,157650392" more_url="https://nominatim.openstreetmap.org/search/?street=centro&city=Cuiaba+Gerais&country=Brazil&exclude_place_ids=98415946%2C241126356%2C144782900%2C154971813%2C240519628%2C188761987%2C239459010%2C176623637%2C161991581%2C157650392&format=xml&accept-language=pt-BR">
  <place place_id="98415946" osm_type="way" osm_id="9704093" place_rank="26" address_rank="26" boundingbox="-19.9281033,-19.9279313,-43.9578232,-43.9576731" lat="-19.9281033" lon="-43.9578232" display_name="Rua Cuiabá, Barro Preto, Regional Centro-Sul, Belo Horizonte, Região Geográfica Imediata de Belo Horizonte, Região Metropolitana de Belo Horizonte, Região Geográfica Intermediária de Belo Horizonte, Minas Gerais, Região Sudeste, 30110-062, Brasil" class="highway" type="residential" importance="0.3" /> 
  <place place_id="241126356" osm_type="way" osm_id="706524527" place_rank="26" address_rank="26" boundingbox="-19.9839298,-19.9838139,-44.0366471,-44.0354535" lat="-19.9838139" lon="-44.0360262" display_name="Rua Cuiaba, Vila Tirol, Barreiro, Belo Horizonte, Região Geográfica Imediata de Belo Horizonte, Região Metropolitana de Belo Horizonte, Região Geográfica Intermediária de Belo Horizonte, Minas Gerais, Região Sudeste, 30662-710, Brasil" class="highway" type="residential" importance="0.3" /> 
  <place place_id="144782900" osm_type="way" osm_id="183653804" place_rank="26" address_rank="26" boundingbox="-19.4709816,-19.4685153,-44.2605449,-44.2602161" lat="-19.4691312" lon="-44.2604628" display_name="Rua Cuiaba, Santo Antônio, Sete Lagoas, Região Geográfica Imediata de Sete Lagoas, Região Geográfica Intermediária de Belo Horizonte, Minas Gerais, Região Sudeste, 35702-383, Brasil" class="highway" type="residential" importance="0.3" /> 
  <place place_id="154971813" osm_type="way" osm_id="219571584" place_rank="26" address_rank="26" boundingbox="-19.8858592,-19.8855258,-43.8565044,-43.8563379" lat="-19.8855674" lon="-43.8564843" display_name="Rua Cuiaba, Vila Eugênio Rossi, Nações Unidas, Carvalho de Brito, Sabará, Região Geográfica Imediata de Belo Horizonte, Região Metropolitana de Belo Horizonte, Região Geográfica Intermediária de Belo Horizonte, Minas Gerais, Região Sudeste, 34590340, Brasil" class="highway" type="residential" importance="0.3" /> 
  <place place_id="240519628" osm_type="way" osm_id="703189713" place_rank="26" address_rank="26" boundingbox="-19.3777459,-19.3772834,-42.5548416,-42.5537423" lat="-19.3775043" lon="-42.5542853" display_name="Rua Cuiaba, São Francisco, Santana do Paraíso, Região Geográfica Imediata de Ipatinga, Região Metropolitana do Vale do Aço, Região Geográfica Intermediária de Ipatinga, Minas Gerais, Região Sudeste, 35167-000, Brasil" class="highway" type="residential" importance="0.3" /> 
  <place place_id="188761987" osm_type="way" osm_id="375570552" place_rank="26" address_rank="26" boundingbox="-19.6290482,-19.6288352,-42.6225288,-42.6210567" lat="-19.6289168" lon="-42.6216973" display_name="Rua Cuiaba, Cava Grande, Marliéria, Região Geográfica Imediata de Ipatinga, Região Geográfica Intermediária de Ipatinga, Minas Gerais, Região Sudeste, Brasil" class="highway" type="tertiary" importance="0.3" /> 
  <place place_id="239459010" osm_type="way" osm_id="697854942" place_rank="26" address_rank="26" boundingbox="-21.36471,-21.3639319,-45.5059779,-45.5059484" lat="-21.3643503" lon="-45.5059779" display_name="Rua Cuiabá, Vila Romana, Três Pontas, Região Geográfica Imediata de Três Pontas - Boa Esperança, Região Geográfica Intermediária de Varginha, Minas Gerais, Região Sudeste, 37190000, Brasil" class="highway" type="residential" importance="0.2" /> 
  <place place_id="176623637" osm_type="way" osm_id="314157083" place_rank="26" address_rank="26" boundingbox="-21.3666097,-21.36471,-45.5059919,-45.5054563" lat="-21.3654966" lon="-45.5059919" display_name="Rua Cuiabá, Padre Vitor, Três Pontas, Região Geográfica Imediata de Três Pontas - Boa Esperança, Região Geográfica Intermediária de Varginha, Minas Gerais, Região Sudeste, 37190000, Brasil" class="highway" type="residential" importance="0.2" /> 
  <place place_id="161991581" osm_type="way" osm_id="246131223" place_rank="26" address_rank="26" boundingbox="-21.0187898,-21.0162602,-46.5251098,-46.5245105" lat="-21.0171977" lon="-46.5248948" display_name="Rua Cuiabá, Novo Horizonte, Bom Jesus da Penha, Região Geográfica Imediata de Passos, Região Geográfica Intermediária de Varginha, Minas Gerais, Região Sudeste, Brasil" class="highway" type="residential" importance="0.2" /> 
  <place place_id="157650392" osm_type="way" osm_id="229320053" place_rank="26" address_rank="26" boundingbox="-20.1462763,-20.1426447,-44.2082966,-44.2067983" lat="-20.1444014" lon="-44.2076298" display_name="Rua Cuiabá, São Sebastião, Brumadinho, Região Geográfica Imediata de Belo Horizonte, Região Metropolitana de Belo Horizonte, Região Geográfica Intermediária de Belo Horizonte, Minas Gerais, Região Sudeste, 35460-000, Brasil" class="highway" type="residential" importance="0.2" /> 
  </searchresults>

 

agora o meu código lendo

 

 Sub MostraTexto()

        Dim alterar As Boolean = False
        Dim Texto As String = ""
        Dim Linha() As String = Strings.Split(My.Computer.FileSystem.ReadAllText("I:\msdn2.xml", System.Text.Encoding.Default), ControlChars.CrLf)
        'Verifica linha a linha
        For i As Integer = 0 To Linha.Length - 1
            'Se não estiver vazia...
            If Linha(i) <> "" Then      
                Texto &= Linha(i) & ControlChars.CrLf

            End If
        Next
        MsgBox(Texto)

    End Sub

 

Link to comment
Share on other sites

programadorvb6
Try
    'LOAD DOCUMENT
    Dim doc = Xdocument.Load("C:\Users\kevin.deery\Desktop\myFile.xml")

    'GET ATTRIBUTE VALUES
    For Each val As XElement In doc.Descendants("ProductVariantAttribute")
        If val.HasAttributes Then
            MessageBox.Show(val.Attribute("ID").Value)
        End If
    Next

    'GET ELEMENT VALUES
    For Each val As XElement In doc.Descendants("ProductVariantAttributeValue")
        If val.HasElements Then
            MessageBox.Show(val.Element("Value").Value)
        End If
    Next

Catch ex As Exception
    'THROW ERROR
    MessageBox.Show(ex.ToString, "Error", MessageBoxButtons.OK)
End Try

Veja este Link talvez te ajude.

Edited by programadorvb6

______________________________________________________________________________

Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé.
 

Link to comment
Share on other sites

Desse modo amigo não vai funcionar , a biblioteca Xdocument não ler esse tipo de programação , eu estava pesquisando na internet parece que é um tipo de xml osm, tem que ver qual biblioteca que lê esse tipo de programação entendeu? , eu já fiz de tudo e da erro já de cara na leitura

Link to comment
Share on other sites

Sub ModificarLinha()
        Dim Texto As String = ""
        Dim latitude As New ArrayList
        Dim longitude As New ArrayList
        Dim Display As New ArrayList

        Dim Linha() As String = Strings.Split(My.Computer.FileSystem.ReadAllText("I:\msdn2.xml", System.Text.Encoding.Default), ControlChars.CrLf)

        'Verifica linha a linha
        For i As Integer = 0 To Linha.Length - 1
            'Se não estiver vazia...
            If Linha(i) <> "" Then
                If Linha(i).Contains("lat") Then
                    Texto = Linha(i)

                    'Aqui vou quebrar espaço por espaço
                    Dim strarr() As String
                    strarr = Texto.Split(" "c)
                    For Each s As String In strarr

                        'Aqui eu pego somente as lat
                        If s.Contains("lat") Then
                            Dim textoTemporario As String = s.Replace("lat=", "")
                            textoTemporario = textoTemporario.Replace("""", "")
                            latitude.Add(textoTemporario)
                        End If

                        If s.Contains("lon") Then
                            Dim textoTemporario As String = s.Replace("lon=", "")
                            textoTemporario = textoTemporario.Replace("""", "")
                            longitude.Add(textoTemporario)
                        End If

                    Next
                    '----------------------------------

                End If
                ' Texto &= Linha(i) & ControlChars.CrLf
            End If
        Next

        'MsgBox(Texto)
        'My.Computer.FileSystem.WriteAllText("I:\msdn2.xml", Texto, False, System.Text.Encoding.Default)
    End Sub

Então fiz esse trecho hoje , porém não estou conseguindo pegar o display , por favor me ajude, lat, e a long peguei e coloquei em um arraylist

 

display_name="Rua Cuiabá, São Sebastião, Brumadinho, Região Geográfica Imediata de Belo Horizonte, Região Metropolitana de Belo Horizonte, Região Geográfica Intermediária de Belo Horizonte, Minas Gerais, Região Sudeste, 35460-000, Brasil"

 

Link to comment
Share on other sites

programadorvb6

Link 1

Nota em cima  com o exemplo que te dei tens que chamar a biblioteca com a instrução: 
Imports System.Xml

Me manda o ficheiro xml e os outros todos para : PMtQheuL1a93IFOC6wjV@gmail.com

Diz-me quais os valores que queres : lat; lon ; e
display_name ?

Edited by programadorvb6

______________________________________________________________________________

Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé.
 

Link to comment
Share on other sites

Rapaz, ele não lê o arquivo! , eu estou tentando fazer manual mesmo lendo linha por linha , vou te mandar

Edited by sabing
Link to comment
Share on other sites

Sub ModificarLinha()
        Dim Texto As String = String.Empty
        Dim latitude As New ArrayList
        Dim longitude As New ArrayList
        Dim ende As New ArrayList

        Dim Linha() As String = Strings.Split(My.Computer.FileSystem.ReadAllText("I:\msdn2.xml", System.Text.Encoding.Default), ControlChars.CrLf)

        Dim conta As Integer = 14
        Dim J As Integer = 0

        Dim strTexto As String = String.Empty

        'Verifica linha a linha
        For i As Integer = 0 To Linha.Length - 1
            'Se não estiver vazia...
            If Linha(i) <> "" Then
                If Linha(i).Contains("lat") Then
                    Texto = Linha(i)
                    'Aqui vou quebrar espaço por espaço
                    Dim strarr() As String
                    strarr = Texto.Split(" "c)
                    For Each s As String In strarr

                        'Aqui eu pego somente as lat
                        If s.Contains("lat") Then
                            Dim textoTemporario As String = s.Replace("lat=", "")
                            textoTemporario = textoTemporario.Replace("""", "")
                            latitude.Add(textoTemporario)
                        End If
                        If s.Contains("lon") Then
                            Dim textoTemporario As String = s.Replace("lon=", "")
                            textoTemporario = textoTemporario.Replace("""", "")
                            longitude.Add(textoTemporario)
                        End If

                    Next
                    '----------------------------------
                End If

                Dim str As String = Linha(i)
                Dim reg = New Regex(""".*?""")
                Dim matches = reg.Matches(str)
                For Each item In matches
                    J = J + 1
                    If (J > 2) And ((J + 12) = conta) Then
                        ende.Add(item.ToString())
                    End If
                Next
                '--------------------------
                'Texto &= Linha(i) & ControlChars.CrLf
                conta = (conta + 12)
            End If
        Next

        'MsgBox(Texto)
        'My.Computer.FileSystem.WriteAllText("I:\msdn2.xml", Texto, False, System.Text.Encoding.Default)
    End Sub

Eu fiz esse código funcionou porém queria melhorar ele alguém poderia me ajudar?

Link to comment
Share on other sites

programadorvb6

Olá sabing. peço que me envie os ficheiros dentro de um ficheiro zip ou Rar 

Sem outro assunto me despeço.
Vitor Teles.

Edited by programadorvb6

______________________________________________________________________________

Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé.
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.