如何解决-元素类型meta必须由匹配的结束标记[closed]终止

问题描述 投票:-3回答:1
我试图为天气应用编写代码,但出现此错误:

org.xml.sax.SAXParseException; lineNumber:2; columnNumber:27;元素类型“元”必须以匹配的结束标记“”终止。在com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1239)在main.Weather.GoogleWeather.getWeather(GoogleWeather.java:38)上在main.Main.main(Main.java:12)

我不知道是否正确设置了所有内容

我的代码:

public class GoogleWeather extends Weather{ private final String googleWeatherURL = "http://www.google.com/ig/api?weather="; public GoogleWeather(String city, String locationPoints) throws IOException, SAXException { super(city, locationPoints); } @Override public void getWeather() { String location = "Warsaw, PL"; String link = googleWeatherURL + location; link = link.replace(" ", "%20"); try { URL urlObject = new URL(link); InputStream in = urlObject.openStream(); XMLReader xmlReader = XMLReaderFactory.createXMLReader(); XMLHandler xmlHandler = new XMLHandler(); xmlReader.setContentHandler((ContentHandler) xmlHandler); InputSource inSource = new InputSource(in); xmlReader.parse(inSource); } catch (IOException ioe) { ioe.printStackTrace(); } catch (SAXException se) { se.printStackTrace(); }

public class XMLHandler extends DefaultHandler { private ArrayList<Integer> night = new ArrayList<Integer>(); private ArrayList<Integer> day = new ArrayList<Integer>(); private ArrayList<String> days = new ArrayList<String>(); private ArrayList<String> conditions = new ArrayList<String>(); public XMLHandler() { super(); } @Override public void startDocument() { System.out.println("Start document"); } @Override public void endDocument() { System.out.println("End document"); } @Override public void startElement(String uri, String name, String qName, Attributes atts) { if (qName.compareTo("day_of_week") == 0) { String day = atts.getValue(0); System.out.println("Day: " + day+ " ; "); this.days.add(day); } if (qName.compareToIgnoreCase("low") == 0) { int night = Integer.parseInt(atts.getValue(0)); System.out.print("Low: " + night + " ; "); this.night.add(night); } if (qName.compareToIgnoreCase("high") == 0) { int high = Integer.parseInt(atts.getValue(0)); System.out.print("High: " + high + " ; "); this.day.add(high); } if (qName.compareToIgnoreCase("condition data") == 0) { String conditions = atts.getValue(0); System.out.print("Conditions: " + conditions + " ; "); this.conditions.add(conditions); } } }

提前感谢。
java xml weather
1个回答
1
投票
在开始通过XML解析器之前,您是否曾尝试过请求该URL的响应?

您尝试使用的API已停用多年,Google仅给您提供301并提供HTML网页,以防调用者不知道它刚收到301。

此服务已不存在,您无法使用它,并且您尝试获取的URL不会为您提供XML,因此,为什么XML解析器给您一个错误。

© www.soinside.com 2019 - 2024. All rights reserved.