Leer página XML proveniente de una API en C#

En algún momento necesitaremos extraer información de cierta pagina web como: de clima, de música, de correo, etc. La cual podemos tomar como fuente de información para nuestras aplicaciones , Muchas de estas paginas  dar servicio a los programadores a través de paginas en formato XML y Json principalmente, con un  acceso a ellas a través de una URL o a través de una API que casi vienen a ser lo mismo.

En este articulo vamos a ver como podemos tener acceso al clima de un determinada ciudad con la pagina http://openweathermap.org/  a través de API.

Acá podrás encontrar de como usar la API http://openweathermap.org/current.

Necesitaremos:

appid

La cual obtendremos una clave única al registrarnos, para nuestro ejemplo:  3e5e4227ca5c4ea9aed13ffac9a650b3

id

Esta es la id de la ciudad a obtener el clima. Lima: 3936456

lang

El lenguaje en que queremos la información. Español: es

units

El sistema métrico de medición. Grados celcius: metric

mode

el formato de respuesta de la pagina. XML: xml

Estos son los requerimientos básicos que necesitaremos para poder obtener el clima de la ciudad de lima.

Ahora creemos nuestras variables en C#


string appid = "3e5e4227ca5c4ea9aed13ffac9a650b3";
string id = "3936456";
string lang = "es";
string unit = "metric";
string mode = "xml";

Después tenemos que unirlo con la url de la API de la siguiente forma, según la pagina del uso de la API


string url = "http://api.openweathermap.org/data/2.5/weather?id=" + id + "&appid=" + appid + "&lang=" + lang + "&units=" + unit + "&mode=" + mode;

bueno al url al final tendrá la siguiente dirección:

http://api.openweathermap.org/data/2.5/weather?id=3936456&appid=3e5e4227ca5c4ea9aed13ffac9a650b3&lang=es&units=metric&mode=xml

Una ves obtenido el archivo XML podemos pasar a la programación de la lectura en C#.

descarga el codido AQUI




comentarios

20 comentarios “Leer página XML proveniente de una API en C#

  1. farib Contestar

    Hola gerson una pregunta, le puse el weather – icon, para q aparezca la foto del tiempo(descargue las fotos), pero no se como hacer para que lea el .png por que aparece esto en la API icon=”04d” (pero no aparece el .png), trate de agregarlo así… lblIcons.Content = icons + “*.png*”; pero como no se mucho de código, no funciono, como puedo hacer para q lea el .png (busque tutoriales leí artículos pero no entiendo todavía como hacer para q lea el .png) Gracias!

    • Gerson Post authorContestar

      para trabajar con imágenes necesitas usar la herramienta de “Image” ahora la opción de cambar imagenes es la de “source” ahi ponemos la dirección de la imagen a mostrar, espero pueda ayudarte este pequeño articulo http://www.dotnetperls.com/image-wpf

      • farib Contestar

        me quedaría algo así?

        BitmapImage b = new BitmapImage();
        b.BeginInit();
        b.UriSource = new Uri(icons);
        b.EndInit();

        • Gerson Post authorContestar

          algo asi, mira creo que esto esta mas fácil de entender: ImageSource imageSource = new BitmapImage(new Uri(“C:\\FileName.gif”));

          image1.Source = imageSource; // donde image1 es el nombre de tu herramienta de Image

          • farib

            pero donde pondria lo de icon, por q en la API aparecen las imagenes

  2. pedro Contestar

    hola Gerson, tengo un dilema,me gustaria hacer un jarvis pero veo que todos son mas o menos igual y se me ocurrio una idea que no se ni siquiera como planteartela, me dicen que no se puede hacer pero vi un ejemplo pero perdi la pagina osea que si se puede hacer, te explico para abrir programas siempre es lo mismo case ” abre google”: speakout bla bla
    system diagnostic.process.star( ruta)…… bien ahi va la idea si el speechrecognition tiene el dictationgramar por defecto y reconoce todas las palabras en español y mas cuando ya has entrenado y has hecho lo del asistente de windows ( mas o menos) porque no se hace de esta forma? bien se reconoce la palabra, con speechrecognition copie la la palabra en clipboard… enviarla a la carpeta acesos directos ( creada previamente) que la busque en el cuadro de busqueda, una vez encontrada que la marque como si la marcara el mouse y luego con un system.diagnostic.process. star abrir el programa por defecto en tu pc… o que el mouse boton derecho abrir programa o abrir que es lo que pone en el mio jejje seria posible sabes los “case” que te ahorrarias en el codigo ? y sino hacer una lista de comandos que se pudiera añadir desde el hub los nombres del programa por si alguno es de nombre raro o dificil de entender que en ese caso siempre puedes cambiar el nombre del acceso directo el exterior por que el interno es el que realmente abre el programa …sabes tambien que con este sistema podrias abrir cualquier archivo documento.cancion pelicula y a todo caso por lo menos abrir la ventana de la carpeta correspondiente para ver que archivo en caso que no sea un acceso directo que puedas ver el archivo que buscas y abrirlo con la voz y eso seria con un QEvent mas o menos todos tenemos las mismas carpetas por defecto documentos imagenes descargas musica videos archivos de programa no se si me explico,o que se puedan añadir carpetas desde el hub espero que captes la idea gracias y espero que me puedas dar un ejemplo para hacerlo en mi jarvis o que pudieras añadir eso al tuyo y porque no poner un avatar de una cabeza como he visto algunos y que respondan no con las frases predefinidas sino que el movimiento de la boca aparte de los gestos de la cara solo se mueva cuando salga sonido del syntetizer en fin estoy empezando en esto he visto muchos asistentes y eso que te digo aun no lo he visto en ninguno y por cierto me alegro de que estes de vuelta no sabiamos nada de ti un abrazo fuerte

  3. pedro Contestar

    gracias por responder, pero no me dices nada de lo que te digo ah y por cierto tienes 4 mil personas suscritas que paso al final con la tercera parte de la alarma eso no se hace querido gerson cuando hay tantas personas pendientes de ti venga saludos y gracias por nada

  4. pedro Contestar

    hola Gerson ya han pasado 14 dias se que tienes mucho trabajo, pero sigo esperando la tercera parte de la alarma yo y mas gente y por favor solo dime si lo que te comente se puede hacer y si me hicieras mas o menos un ejemplo seria lo mas gracias, espero por lo menos una respuesta y gracias por tu tiempo y tu esfuerzo aprendo mucho

  5. pedro Contestar

    hola gerson, lastima de la gente que te sigue, y que no nos respetes,…lo que haces es de agradecer por tu tiempo,trabajo y es fuerzo pero que me tomes por lo menos a mi por tonto es lo que mas me molesta, se honesto por lo menos y dime no lo voy hacer( la tercera parte de la alarma) y asi ni te molesto, se que tienes muchisimo trabajo, pero cuando alguien se compromete con hacer videos y enseñarnos a los mas torpes o los que no sabemos nada de programacion, por lo menos cumple tu palabra, y respeta a las 4000 personas que te siguen por todas las vias tanto como por facebook tu blog y otras variantes, y no dejes las cosas a medias, ni a los que te seguimos como si fueramos simples numeros en tus suscripciones, yo tambien tengo sentimientos y trabajo y cuido de otras personas, pero por lo menos doy explicaciones del si puedo o no puedo hacer las cosas y no dejo tirado a 4000 personas como has hecho tu,la verdad es que es de agradecer todo lo que haces y te lo agradezco, de verdad, pero… que no respondas ni si quiera a los que te seguimos con devocion y nos pareces super especial y buen tipo y muy buen profesor eso duele, y repito a mucha gente le comento lo que te escribi en mi primer mensage y le parece muy buena idea, el problema es que no tienen el grado de formacion que tu tienes,y no saben hacerlo, o no me explique bien o no entendiste nada de lo que te escribi,y encima en vez de darme las gracias por darte ideas para mejorar el famoso jarvis que todo el mundo le gustaria tener, siempre haces las cosas que otros tienen, y encima me dices que te gustaria que el comentario fuera mas corto pero no me das una solucion, hay muchos jarvis hay mucha gente que hacen videos, pero tienes algo a tu favor tu voz calmada y tu saber hacer pero, no tocas por ejemplo como hacer que cuando hable jarvis parezca que hable el, como hacen otros no se si me entiendes o no me explico me refiero al efecto ese de que se enciende un circulo cuando habla jarvis, y no el tipico progressbar, yo lo tengo pero lo tengo en windows form, y claro el timer no existe en WPF ESTA EL DISPATCHER pero no se como hacerlo, no enseñas como hacer un hud dinamico que cuando pase el raton por encima haga algo, no se de verdad me gusta mucho lo que haces y te admiro pero no lo enseñas todo y en parte lo entiendo pero claro otros tenemos otras ideas mejores o peores pero por lo menos darnos la posobilidad de como hacerlo tengo el codigo de una calculadora por voz se la mande a otros que como tu hacen videos y me dijeron de traducir su programa lo traduje con mucho esfuerzo muchas horas de no dormir y sabes que recibi nada a cambio, tengo muchos proyectos guardados que he ido bajando de internet pero como no se programacion no se como utilizarlo, me paso muchas horas buscando en la red y si todo lo que tengo lo tuviera tu jarvis seria una maravilla luego esta otra cosa de si se puede interactuar con otros programas por medio de los comandos de tecla ,como abrir los menus y las opciones de esos otros programas como abrir otros archivos musica documentos, todo por voz,usar el “aiml” que pudieras tener una conversacion y que aprendiera el mismo por los datos que le das y recordara las conversaciones o te recordara tus citas recordatorios pero sin tener que hacerlo tu metiendole los recordatorios todo a nivel interno en fin Gerson se que esto lo leeras tu solo antes de publicarlo no lo publiques evidentemente no lo haras, pero me gustaria poder ayudarte si me enseñaras como, tengo muchisimo tiempo libre, despues de mis obligaciones, y por favor no caigas en lo mismo que hacen todos, todos son muy iguales, haz algo realmente especial diferente distinto y espectacular cambia el hud,se que tambien estas aprendiendo ha trabajar por medios de capas, has visto el jarvis de el brasileño esta muy muy bien pero deja mucho que desear es muy dificil entender su codigo, parece como sucio mucho lio, tambien esta el jarvis y albio tambien esta muy bien pero sigo pensando que se centran mucho en ellos mismos engañan a la gente como por ejemplo no tiene informacion del sistema se lo pase yo, no se si lo habran incorporado en el nuevo que han hecho, hacen ver como que el jarvis mide los grados de la pantalla disco duro placa madre pero todo es por string luego cuenta chistes pero escritos tambien dentro del codigo, hay muchas paginas de chistes o bromas por medio de xml que puedes incluir por medio de script no se quiero que el tuyo sea el mejor incluso no tienes ni que usar tantas cosas para que te de el clima con un simple script seria bastante solo deberias hacerlo de tal forma que pudieras meter tu numero de ciudad y listo, si quieres ponerte en contacto conmigo te doy mi correo y te paso todo lo que tengo si algo te sirve pues mejor podriamos intercambiar ideas y si necesitas algo yo puedo buscartelo no se gerson solo quiero que jarvis sea realmente increible, pero no caigas en lo que hacen todos, anthar_serak1@hotmail.com
    un abrazo
    P.D DEBERIAS ENUMERAR TUS VIDEOS PARA QUE LA GENTE SEPA POR DONDE VAN Y CUMPLIR CON LO QUE DICES UN VIDEO POR LO MENOS POR SEMANA
    CIAO

      • Pedro Contestar

        Gracias Gerson por fin podre terminar mi jarvis gracias a la alarma pero no se donde lo has compartido porque no lo encuentro he buscado en tu canal de youtube y no lo veo y en tu blog tampoco voy a mirar mejor a ver si lo encuentro muchas gracias por tu trabajo y siento si me he puesto algo estupido lo siento un abrazo

        • Gerson Post authorContestar

          perdón, ya lo puedes descargar en la opción de crear tu asistente de la pagina web

        • roberto Contestar

          le podes decir a gerson que no puedo programar el wjddnxjs-kdjfhg para el boton del sanitario y que si hiciera que el agua gire hacia el otro lado seria genial. a mi me ignora , yo pienso que se rasca todo el dia, aparte no sabe nada, imaginate, hacer un sistema que no puede servir cafe con un codigo g1 , es un tonto, no se para que le pedimos ayuda si nosotros hacemos post mejores y nuestro asistente hasta corta papel higienico, no se que piensa.
          quisas sienta que le debemos algo por subir videos compartiendo lo que aprendio con gente que no sabe decir gracias y entender que uno tiene responsabilidades.
          al pedo.
          gracias gerson sos lo mas.jaja

      • Pedro Contestar

        Una cosa mas, si puedes hacer un codigo que cuando hable jarvis parezca que hable el por medio del interface, como te dije lo tengo en window form y se usa el timer pero en en WPF NO HAY FORMA y con el dispacher es mas dificil o si hubiera otra forma mas facil y buscar un archivo por voz? Pero en vez de en google en el pc seria lo mas , bueno gracias por tus videos son realmente faciles dehacer con tus explicaciones gracias

  6. el pesao Contestar

    hola Gerson, podrias ayudarme? tengo tu proyecto del clima pero…. como tienes que hacer para por ejemplo en la velocidad del viento, el pronostico, como tienes que hacer si tiene mas simbolos que yo no entiendo por ejemplo en la velocidad del viento como hacer que te diga la velocidad o el pronostico del cima te lo dice en ingles de que sirve eso si no sabes ingles? y la temperatura maxima o minima? creo y que ya que te pusiste hacer el video haberlo hecho todo o si no quieres hacer un video por lo menos haz un ejemplo de todo asi podemos nosotros poner o quitar lo que nos venga bien o lo que nos interese a cada uno seria un detallazo y no dejar a la mitad el video recuerda que como yo hay muchas personas que empiezan o solo copian y pegan en su asistente lo que les interesa un abrazo y por cierto hay una pagina totalmente en español que me parece que no necesitas ni api ni todo eso…. solo la numeracion de tu ciudad la id por si te interesa es http://tutiempo.net y esta seria tu pagina para lima en xml
    http://xml.tutiempo.net/xml/103459.xml
    graciassssss

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *