我正在尝试使用YOURLS创建自定义网址缩短器。当我在YOURLS中使用内置API时,这就是chrome作为XML文档出现的内容:
<result>
<url>
<keyword>2</keyword>
<url>http://www.bing.com</url>
<title>http://www.bing.com</title>
<date>2013-06-08 19:24:28</date>
<ip>127.0.0.1</ip>
</url>
<status>success</status>
<message>http://www.bing.com added to database</message>
<title>http://www.bing.com</title>
<shorturl>http://127.0.0.1/2</shorturl>
<statusCode>200</statusCode>
</result>
我只想要“短篇”中的东西
但是,我在eclipse中收到错误
URL url=null;
try {
url = new URL("http://localhost/yourls/yourls-api.php?username=username&password=password&action=shorturl&url="+"http://google.ca");
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openConnection().getInputStream()));
String s = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = (Document) db.parse((url).openStream());
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = (XPathExpression) xpath.compile("shorturl");
Object exprResult = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodeList = (NodeList) exprResult;
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Object exprResult = expr.evaluate(doc, XPathConstants.NODESET);
错误说“XPathExpressions类型中的方法evaluate(Node,short,object)不适用于参数(Document,QName)”
有人知道如何解决这个问题吗?
答案 0 :(得分:1)
我的猜测是你有一个名为XPathExpression的类的导入,但它不是标准的javax.xml.xpath.XPathExpression
。这也可以解释为什么你的代码中有一个强制转换:
XPathExpression expr = (XPathExpression) xpath.compile("shorturl");
如果导入的类是javax.xml.xpath.XPathExpression
,则不需要它。编译器可能对简单的赋值感到不满意,并且IDE建议通过添加强制转换来“修复”它。但问题是你导入了错误的类。
答案 1 :(得分:0)
此处的错误消息告诉您所需的一切:您的evaluate
方法调用具有错误的签名。传递正确的参数(Node,short,Object),或者使用您喜欢的签名重载方法(即(Document,QName))。您必须从您当前使用的参数中构建正确的参数,否则您必须编写自己的evaluate
方法版本。