14 Replies Latest reply on Dec 30, 2016 1:52 AM by Mayank Patel RSS
    Mayank Patel Apprentice

    Problem in yahoo weather

    Hello Expert ,

     

    I am getting this error on get yahoo weather :

     

    If you know the solution for this error please suggest me.@

     

    Execution error in service script [WeatherThing GetWeather] : Wrapped org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 429; The content of elements must consist of well-formed character data or markup. Cause: The content of elements must consist of well-formed character data or markup.

     

    Code :

     

    var stringLocation=location+" ";

    var arrayLocations=stringLocation.split(",");

    var lat=arrayLocations[0];

    var long=arrayLocations[1];

    //Modify the open weather url here if you are using your own API key

    var params = {

    url: "http://api.openweathermap.org/data/2.5/forecast?lat="+lat+"&lon="+long+ "&units=imperial" +"&type=accurate&mode=xml&APPID=4abc8a3c9f101ccf9c7cfe7cbf3dfed7" /* STRING */, 

        timeout: 60 /* NUMBER */

    };

     

    // result: XML

    var xmlPage = Resources["ContentLoaderFunctions"].LoadXML(params);   // Error Generate on This line

     

     

    var params = {

        infoTableName : "InfoTable", 

        dataShapeName : "OpenWeatherFeed"

    };

     

     

    // CreateInfoTableFromDataShape(infoTableName:STRING("InfoTable"), dataShapeName:STRING):INFOTABLE(YahooWeatherFeed)

    var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);

    var from_today_value=xmlPage.forecast.time[0].@from.substring(0,10);

    logger.warn("from_today_value= "+from_today_value);

    for each (var item in xmlPage.forecast.time) {

        var row = new Object();

        var from_current_value=item.@from.substring(0,10);

        if(from_current_value!=from_today_value){

            row.WindDirection = item.windDirection.@name;

            row.WindSpeed=item.windSpeed.@mps;

            row.WeatherTemp=parseFloat(item.temperature.@value);

            row.WeatherHumidity=parseFloat(item.humidity.@value);

            row.From=item.@from;

            row.To=item.@to;

            row.Title=xmlPage.location.name+" "+xmlPage.location.country;

            row.Precipitation=(item.precipitation.@type+" "+item.precipitation.@value)==" "?"No Precipitation":item.precipitation.@type;

            result.AddRow(row);

        }

    }

     

    Thanks ,

    Mayank

      • Re: Problem in yahoo weather
        aanjan Heavyweight Champ

        Mayank, you might've already checked this, but just in case - are you getting a valid xml from that url?

          • Re: Problem in yahoo weather
            Mayank Patel Apprentice

            Yes Ravi , i got valid xml and Json also , but problem in parsing this xml and as well json in Thingworx service, I tested this online parser and no any error shown me on online parser. Would you provide me any url for weather. so i can test it.

             

            Thanks ,

          • Re: Problem in yahoo weather
            veronicamih Creator

            Hi Mayank,

             

            Yahoo Weather API is no longer in service. Please use OpenWeatherMap as a replacement or Wunderground API.

            Below is an implementation for a  OpenWeatherMap API service call:

             

            var stringLocation=location+" ";

            var arrayLocations=stringLocation.split(",");

            var lat=arrayLocations[0];

            var long=arrayLocations[1];

            var params = {

            url: "http://api.openweathermap.org/data/2.5/forecast?lat="+lat+"&lon="+long+"&units=metric&type=accurate&mode=xml&APPID=4abc8a3c9f101ccf9c7cfe7cbf3dfed7" /* STRING */,

            timeout: 160 /* NUMBER */

            };

            // result: XML

            var xmlPage = Resources["ContentLoaderFunctions"].LoadXML(params);

            var params = {

            infoTableName : "InfoTable",

            dataShapeName : "OpenWeatherFeed"

            };

            var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);

            var from_today_value=xmlPage.forecast.time[0].@from.substring(0,10);

            1. logger.warn("from_today_value= "+from_today_value);

            for each (var item in xmlPage.forecast.time) {

            var row = new Object();

            var from_current_value=item.@from.substring(0,10);

             

            row.WindDirection = item.windDirection.@name;

                row.WindSpeed=item.windSpeed.@mps;

            row.WeatherTemp=parseInt(item.temperature.@value);

            row.WeatherHumidity=parseFloat(item.humidity.@value);

            row.From =  item.@from;

            row.To =  item.@to;

            row.Title=xmlPage.location.name+" "+xmlPage.location.country;

            row.Precipitation=(item.precipitation.@type+" "+item.precipitation.@value)==" "?"NoPrecipitation":item.precipitation.@type;

            result.AddRow(row);

             

            }


            Here are the inputs and outputs of the service

             

            Please let me know if you are in need of anything else.

             

            Thank you,

            Veronica

              • Re: Problem in yahoo weather
                rzalman Newbie

                Hi Veronica,

                 

                this code is for forecast in weather application, is possible to get code for actual weather in same application? If I am wrong please correct me.

                 

                http://openweathermap.org/forecast5  Here you use this, it's for forecast in 3 hours interval

                 

                http://openweathermap.org/current

                And i would like to get data from this page if it is possible.

                So i would like exchange yahoo weather for this one:YahooWeatherFeed.

                 

                Thank you for any reply,

                Robert

                • Re: Problem in yahoo weather
                  hlee Newbie

                  Hi,

                   

                  I'm still having an error message of

                  • org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog Cause: Content is not allowed in prolog

                   

                  I guess it's related to this issue

                  ( Mark S. Kolich - Java: Resolving org.xml.sax.SAXParseException: Content is not allowed in prolog )

                   

                  But I have no idea how to modify the code

                   

                  Here is the code

                   

                  var stringLocation=location+" ";

                  var arrayLocations=stringLocation.split(",");

                  var lat=arrayLocations[0];

                  var long=arrayLocations[1];

                  var params = {

                  url: "http://api.openweathermap.org/data/2.5/forecast?lat="+lat+"&lon="+long+"&units=metric&type=accurate&mode=xml&APPID=ff07c7c18d3a5d86f13a93134f1d94a9" /* STRING */,

                  timeout: 160 /* NUMBER */

                  };

                  // result: XML

                  var xmlPage = Resources["ContentLoaderFunctions"].LoadXML(params);

                  var params = {

                  infoTableName : "InfoTable",

                  dataShapeName : "OpenWeatherFeed"

                  };

                  var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);

                  var from_today_value=xmlPage.forecast.time[0].@from.substring(0,10);

                  logger.warn("from_today_value= "+from_today_value);

                  for each (var item in xmlPage.forecast.time) {

                  var row = new Object();

                  var from_current_value=item.@from.substring(0,10);

                   

                  row.WindDirection = item.windDirection.@name;

                      row.WindSpeed=item.windSpeed.@mps;

                  row.WeatherTemp=parseInt(item.temperature.@value);

                  row.WeatherHumidity=parseFloat(item.humidity.@value);

                  row.From =  item.@from;

                  row.To =  item.@to;

                  row.Title=xmlPage.location.name+" "+xmlPage.location.country;

                  row.Precipitation=(item.precipitation.@type+" "+item.precipitation.@value)==" "?"NoPrecipitation":item.precipitation.@type;

                  result.AddRow(row);

                   

                  }

                   

                  Thank you.

                    • Re: Problem in yahoo weather
                      Mayank Patel Apprentice

                      Hello Lee ,

                       

                      Take input parameter as a Location ,

                       

                      var test=Location+" ";

                       

                      var arrayLocations=test.split(",");

                       

                      var lat=arrayLocations[0];

                       

                      var long=arrayLocations[1];

                       

                      var prm = {

                          url : "http://api.openweathermap.org/data/2.5/forecast?lat="+lat+"&lon="+long+"&units=metric&type=accurate&mode=xml&APPID=4abc8a3c9f101ccf9c7cfe7cbf3dfed7",

                          timeout: 160 /* NUMBER */  

                      };

                       

                       

                      var xmlPage = Resources["ContentLoaderFunctions"].LoadXML(prm);

                       

                      // result: XML

                       

                       

                      var params = {

                       

                          infoTableName : "InfoTable",

                       

                          dataShapeName : "OpenWeatherFeed"

                       

                      };

                       

                      var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);

                       

                      var from_today_value=xmlPage.forecast.time[0].@from.substring(0,10);

                       

                      logger.warn("from_today_value= "+from_today_value);

                       

                      for each (var item in xmlPage.forecast.time) {

                       

                          var row = new Object();

                       

                          var from_current_value=item.@from.substring(0,10);

                       

                          row.WindDirection = item.windDirection.@name;

                       

                          row.WindSpeed=item.windSpeed.@mps;

                       

                          row.WeatherTemp=parseInt(item.temperature.@value);

                       

                          row.WeatherHumidity=parseFloat(item.humidity.@value);

                       

                          row.From =  item.@from;

                       

                          row.To =  item.@to;

                       

                          row.Title=xmlPage.location.name+" "+xmlPage.location.country;

                       

                          //  row.Precipitation=(item.precipitation.@type+" "+item.precipitation.@value)==" "?"NoPrecipitation":item.precipitation.@type;

                       

                          result.AddRow(row);

                      }

                       

                      Thanks ,

                      Mayank

                        • Re: Problem in yahoo weather
                          eesquivel Newbie

                          Hello Im have a diferent error mi code is

                          // Need to make a free wunderground.com account to get this key

                          var apiKey = "381603bc1002b5ce";

                          var temperature;

                          var humidity;

                            //Inputted location needs to be valid lat, long: 40.7127, 74.0059

                          if(location != null){

                              var test=location+" ";

                           

                          var arrayLocations=test.split(",");

                           

                          var lat=arrayLocations[0];

                           

                          var long=arrayLocations[1];

                           

                          var prm = {

                              url : "http://api.openweathermap.org/data/2.5/forecast?lat="+lat+"&lon="+long+"&units=metric&type=accurate&mode=xml&APPID=4abc8a3c9f101ccf9c7cfe7cbf3dfed7",

                              timeout: 160 /* NUMBER */ 

                          };

                           

                           

                          var xmlPage = Resources["ContentLoaderFunctions"].LoadXML(prm);

                           

                          // result: XML

                           

                           

                          var params = {

                           

                              infoTableName : "InfoTable",

                           

                              dataShapeName : "OpenWeatherFeed"

                           

                          };

                           

                          var result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);

                           

                          var from_today_value=xmlPage.forecast.time[0].@from.substring(0,10);

                           

                          logger.warn("from_today_value= "+from_today_value);

                           

                          for each (var item in xmlPage.forecast.time) {

                           

                              var row = new O

                          atbject();

                           

                              var from_current_value=item.@from.substring(0,10);

                           

                              row.WindDirection = item.windDirection.@name;

                           

                              row.WindSpeed=item.windSpeed.@mps;

                           

                              row.WeatherTemp=parseInt(item.temperature.@value);

                           

                              row.WeatherHumidity=parseFloat(item.humidity.@value);

                           

                              row.From =  item.@from;

                           

                              row.To =  item.@to;

                           

                              row.Title=xmlPage.location.name+" "+xmlPage.location.country;

                           

                              //  row.Precipitation=(item.precipitation.@type+" "+item.precipitation.@value)==" "?"NoPrecipitation":item.precipitation.@type;

                           

                              result.AddRow(row);

                          }

                              }

                           

                          attach image error.png