У меня есть проблема с jdom2 XPath:неясные результаты с jdom2 XPath запроса
test.xhtml код:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<title>mypage</title>
</head>
<body>
<div class="in">
<a class="nextpage" href="url.html">
<img src="img/url.gif" alt="to url.html" />
</a>
</div>
</body>
</html>
Java код:
Document document;
SAXBuilder saxBuilder = new SAXBuilder();
document = saxBuilder.build("test2.html");
XPathFactory xpfac = XPathFactory.instance();
XPathExpression<Element> xp = xpfac.compile("//a[@class = 'nextpage']", Filters.element());
for (Element att : xp.evaluate(document)) {
System.out.println("We have target " + att.getAttributeValue("href"));
}
Но как раз с этим я не могу получить любой элемент. Я обнаружил, что когда запрос //*[@class = 'nextpage']
, он находит его.
We have target url.html
Это должно быть что-то с пространством имен или чем-то другим в заголовке, потому что без него он может генерировать некоторый вывод. Я не знаю, что я делаю неправильно.
«Это должно быть что-то с пространством имен» - правильно. «Возможный дублирующий» вопрос, с которым я связался, был первым хитом, который дал мне Google для «пространства имен jdom xpath» –
теперь решена - изменения: пространство имен пространства имен = пространство имен.Namespace («my», «http: //www.w3 .org/1999/XHTML "); и XPathExpression xp = xpfac.compile ("// my: a [@class = 'nextpage']", Filters.element(), null, пространство имен); –
d3im
Этот вопрос кажется не по теме, потому что он теперь _solved_ (см. Комментарий OP). – devnull