这是我第一次在网站上发帖提问.我一直在寻找一个解决方案,并且可能有一个.但是,我找不到任何可以解决我问题的东西,所以我希望你能帮到我.另外,我不是最好的
java,所以这个问题最终可能会变得非常愚蠢.
我试图从URL解析天气xml文件,我继续收到XPathExpression错误.
public class WeatherBugAPI { private XPath xpath = XPathFactory.newInstance().newXPath(); String API_KEY = "A***************"; public void getLiveWeather(String zipcode) throws Exception{ DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance(); builderFactory.setNamespaceAware(true); DocumentBuilder builder = builderFactory.newDocumentBuilder(); URL xml = new URL("http://A**********.api.wxbug.net/getLiveCompactWeatherRSS.aspx?acode=A**********&zipcode=" + zipcode); try{ InputStream is = xml.openStream(); Document document = builder.parse(is); XPathExpression expr = xpath.compile("//aws:weather"); Node node = (Node)xpath.evaluate("//aws:weather",is,XPathConstants.NODE); LiveWeather weather = new LiveWeather(xpath,node); System.out.println(weather); } catch(XPathExpressionException e){ System.out.println("Failed to parse forcast!"); e.printstacktrace(); } } }
对于所有各种属性,我的LiveWeather类的语句与下面的类似. (其中有很多.)
stationZipcode = (String)xpath.evaluate("//aws:city-state/@zipcode",node,XPathConstants.STRING);
最后是堆栈跟踪:
Failed to parse forcast! javax.xml.transform.TransformerException: Unable to evaluate expression using this context at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:363) at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:213) at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:275) at WeatherBugAPI.getLiveWeather(WeatherBugAPI.java:36) at test.main(test.java:5) Caused by: java.lang.RuntimeException: Unable to evaluate expression using this context at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:212) at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(LocPathIterator.java:210) at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:335) ... 4 more --------- java.lang.RuntimeException: Unable to evaluate expression using this context at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:212) at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(LocPathIterator.java:210) at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:335) at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:213) at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:275) at WeatherBugAPI.getLiveWeather(WeatherBugAPI.java:36) at test.main(test.java:5) --------------- linked to ------------------ javax.xml.xpath.XPathExpressionException at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:289) at WeatherBugAPI.getLiveWeather(WeatherBugAPI.java:36) at test.main(test.java:5) Caused by: javax.xml.transform.TransformerException: Unable to evaluate expression using this context at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:363) at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.eval(XPathImpl.java:213) at com.sun.org.apache.xpath.internal.jaxp.XPathImpl.evaluate(XPathImpl.java:275) ... 2 more Caused by: java.lang.RuntimeException: Unable to evaluate expression using this context at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:212) at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(LocPathIterator.java:210) at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:335) ... 4 more
我试图包含可能需要的任何信息.感谢高级的帮助,如果已经提出这个问题,对不起.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。